CS396N - Web Programming
Spring 2002
Chapter 11 - Mouse and Keyboard Events

What are Events?


Interfaces

Event Listener Interfaces Getting ready to handle events

Mouse Events

    Event Class MouseEvent
    Listener Interface MouseListener
    Listener Methods public void mouseEntered(MouseEvent event) 
    public void mouseExited(MouseEvent event) 
    public void mouseClicked(MouseEvent event) 
    public void mousePressed(MouseEvent event) 
    public void mouseReleased(MouseEvent event) 

    By looking at the name of the methods, it is clear which activity invokes which method. 

    event.getX() returns (int) the x coordinate of mouse position. 
    event.getY() returns (int) the y coordinate of mouse position. 
    event.getClickCount() returns (int) the number of mouse clicks.

    Four steps:

    Step 1: Include the following import statement:
     

      import java.awt.event.*;


    Step 2: Include Implements MouseListener :
     

      public class w2 extends Applet implements MouseListener {

      }
       

    Step 3: Register addMouseListener method in the applet.
     
      this.addMouseListener (this);


    Step 4: Define the five MouseListener methods:
     

      public void mouseClicked(MouseEvent event){

      }

      public void mouseEntered(MouseEvent event){

      }

      public void mouseexited(MouseEvent event){

      }

      public void mousePressed(MouseEvent event){

      }

      public void mouseReleased(MouseEvent event){

      }

 Example
    The following program changes the applet background color, whenever the mouse event occurs.
     
      import java.awt.*;
      import java.applet.*;
      import java.awt.event.*;

      public class MouseEvent1 extends Applet implements MouseListener{

      public void init() {
       

        this.addMouseListener(this);
      }

      public void mouseClicked(MouseEvent e){
       

        setBackground(Color.blue);
      }

      public void mouseEntered(MouseEvent e){
       

        setBackground(Color.cyan);
      }

      public void mouseExited(MouseEvent e){
       

        setBackground(Color.green);
      }

      public void mousePressed(MouseEvent e){
       

        setBackground(Color.magenta);
      }

      public void mouseReleased(MouseEvent e){
       

        setBackground(Color.yellow);
      }

      }

Mouse Motion Activities
     
    Event Class MouseEvent
    Listener Interface MouseMotionListener
    Listener Methods public void mouseMoved(MouseEvent event) 

    Invoked when the mouse button has been moved on a component (with no buttons down).

    public void mouseDragged(MouseEvent event)

    Invoked when a mouse button is pressed on a component and then dragged.

    event.getX() returns (int) the x coordinate of mouse position. 

    event.getY() returns (int) the y coordinate of mouse position. 

    event.getClickCount() returns (int) the number of mouse clicks.

 Example
    The following program changes an applet’s background color when any mouse activity take place.
     
      import java.awt.*;
      import java.applet.*;
      import java.awt.event.*;

      public class MouseEvent2 extends Applet implements
      MouseMotionListener,MouseListener{

      public void init() {

        this.addMouseListener(this);
        this.addMouseMotionListener(this);
      }

      public void mouseMoved(MouseEvent event){

        setBackground(Color.white);
      }

      public void mouseDragged(MouseEvent event){

        setBackground(Color.black);
      }

      public void mouseClicked(MouseEvent e){

        setBackground(Color.blue);
      }

      public void mouseEntered(MouseEvent e){

        setBackground(Color.cyan);
      }

      public void mouseExited(MouseEvent e){

        setBackground(Color.green);
      }

      public void mousePressed(MouseEvent e){

        setBackground(Color.magenta);
      }

      public void mouseReleased(MouseEvent e){

        setBackground(Color.yellow);
      }

      }
       

 Example
    The following program displays the coordinates of the mouse.
     
      import java.awt.*;
      import java.applet.*;
      import java.awt.event.*;

      public class MouseEvent3 extends Applet implements
      MouseMotionListener,MouseListener{

      public void init() {

        this.addMouseListener(this);
        this.addMouseMotionListener(this);
      }

      public void mouseMoved(MouseEvent event){

        setBackground(Color.white);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mouseDragged(MouseEvent event){

        setBackground(Color.black);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mouseClicked(MouseEvent event){

        setBackground(Color.blue);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mouseEntered(MouseEvent event){

        setBackground(Color.cyan);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mouseExited(MouseEvent event){

        setBackground(Color.green);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mousePressed(MouseEvent event){

        setBackground(Color.magenta);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void mouseReleased(MouseEvent event){

        setBackground(Color.yellow);
        int x = event.getX();
        int y = event.getY();
        print(x,y);
      }

      public void print(int x, int y){

        showStatus("x coordinate is = "+x+" y coordinate is = "+y);
      }
    }
     

Keyboard Events

  • Whenever a key is pressed, an object of the KeyEvent class is generated.
  • Event Class KeyEvent
    Listener Interface KeyListener
    Listener Methods public void keyPressed(KeyEvent event) 

    Invoked when a key is pressed. 

    public void keyReleased(KeyEvent event) 

    Invoked when a key is released. 

    public void keyTyped(KeyEvent event) 

    Invoked when a key is typed (pressed and released).

    KeyEvent class For a list of Class variables (virtual key codes), which are defined as static and final, see Virtual Key Codes table below. 

    event.getKeyChar() returns (char) the character pressed. 

    event.getKeyCode() returns (int) the "virtual key code", see table below. 

    event.getModifiers().

    event.isShiftDown() returns (boolean) true if shift key is down. 

    event.isControlDown() returns (boolean) true if control key is down. 

    event.isAltDown() returns (boolean) true if alt key is down 

    KeyEvent.getKeyModifiersText(int modifiers) returns (String).

    KeyEvent.getKeyText(int keycode) returns (String).


     

    Virtual Key Codes

    Alpha keys VK_A through VK_Z
    Numeric keys VK_0 through VK_9
    Function keys VK_F1 through VK_F12 
    Action keys VK_BACK_SPACE 

    VK_ESCAPE, VK_PRINTSCREEN, VK_SCROLL_LOCK, VK_PAUSE 

    Num pad number keys VK_NUMPAD0 through VK_NUMPAD9
    Other Num pad keys VK_NUM_LOCK, VK_SLASH, VK_MULTIPLY, VK_SUBTRACT, VK_ADD, VK_HOME, VK_UP, VK_PAGE_UP, VK_LEFT, VK_RIGHT, VK_END, VK_DOWN, VK_PAGE_DOWN, VK_INSERT, VK_DELETE, VK_ENTER
    Modifier keys VK_ALT, VK_CAPS_LOCK, VK_CONTROL, VK_META, VK_SHIFT
    Punctuation keys VK_SPACE, VK_ENTER, VK_TAB, VK_BACK_QUOTE, VK_SLASH, VK_BACK_SLASH, VK_OPEN_BRACKET, VK_CLOSE_BRACKET, VK_PERIOD, VK_QUOTE, VK_SEMICOLON, VK_SEPARATOR, VK_COMMA, VK_DECIMAL, VK_EQUALS, 
    Other keys VK_ACCEPT, VK_CANCEL, VK_CLEAR, VK_CONVERT, VK_FINAL, VK_HELP, VK_KANA, VK_KANJI, VK_MODECHANGE, VK_NONCONVERT, VK_UNDEFINED, 

    Note


    Example

    The following program displays several text boxes.  Type any key in top box. The other boxes in the applet show information about the key pressed.

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    public class Keys1 extends Applet implements KeyListener{ TextField input;
    TextField output1, output2, output3, output4, output5;
    TextField output6, output7, output8;

    public void init(){

    input = new TextField(30);
    input.addKeyListener(this);
    output1 = new TextField(30);
    output2 = new TextField(30);
    output3 = new TextField(30);
    output4 = new TextField(30);
    output5 = new TextField(30);
    output6 = new TextField(30);
    output7 = new TextField(30);
    output8 = new TextField(30);
    add(input);
    add(output1);
    add(output2);
    add(output3);
    add(output4);
    add(output5);
    add(output6);
    add(output7);
    add(output8);

    }

    public void keyTyped(KeyEvent event){

    }

    public void keyPressed(KeyEvent event){

    char char1 = event.getKeyChar();
    int n = event.getKeyCode();
    int modifiers = event.getModifiers();
    output1.setText("You pressed "+char1);

    output2.setText("Virtual key code value = "+n);
    output3.setText("Name of key pressed = "+KeyEvent.getKeyText(n));
    output4.setText("Shift was pressed = "+event.isShiftDown());
    output5.setText("Control key down = "+event.isControlDown());
    output6.setText("Alt key was pressed = "+event.isAltDown());
    output7.setText("Modifiers value = "+event.getModifiers());
    output8.setText("Modifier text

    ="+KeyEvent.getKeyModifiersText(modifiers));

    }

    public void keyReleased(KeyEvent event) {

    }

    }

    Output


     

    Example

    The following program displays two boxes. Type each keyboard key in the first box and see result in the second box.

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    public class Keys2 extends Applet implements KeyListener{ TextField input;
    TextField output;
    public void init(){ input = new TextField(30);
    input.addKeyListener(this);
    output = new TextField(30);
    add(input);
    add(output);
    }

    public void keyTyped(KeyEvent event){

    }

    public void keyPressed(KeyEvent event){

    String string = " ";

    switch(event.getKeyCode()){

    case KeyEvent.VK_ACCEPT: string = "You pressed VK_ACCEPT"; break;
    case KeyEvent.VK_ADD: string = "You pressed VK_ADD"; break;
    case KeyEvent.VK_ALT: string = "You pressed VK_ALT"; break;
    case KeyEvent.VK_BACK_QUOTE: string = "You pressed VK_BACK_QUOTE"; break;
    case KeyEvent.VK_BACK_SLASH: string = "You pressed VK_BACK_SLASH"; break;
    case KeyEvent.VK_BACK_SPACE: string = "You pressed VK_BACK_SPACE"; break;
    case KeyEvent.VK_CANCEL: string = "You pressed VK_CANCEL"; break;
    case KeyEvent.VK_CAPS_LOCK: string = "You pressed VK_CAPS_LOCK"; break;
    case KeyEvent.VK_CLEAR: string = "You pressed VK_CLEAR"; break;
    case KeyEvent.VK_CLOSE_BRACKET: string = "You pressed VK_CLOSE_BRACKET"; break;
    case KeyEvent.VK_COMMA: string = "You pressed VK_COMMA"; break;
    case KeyEvent.VK_CONTROL: string = "You pressed VK_CONTROL"; break;
    case KeyEvent.VK_CONVERT: string = "You pressed VK_CONVERT"; break;
    case KeyEvent.VK_DECIMAL: string = "You pressed VK_DECIMAL"; break;
    case KeyEvent.VK_DELETE: string = "You pressed VK_DELETE"; break;
    case KeyEvent.VK_DIVIDE: string = "You pressed VK_DIVIDE"; break;
    case KeyEvent.VK_DOWN: string = "You pressed VK_DOWN"; break;
    case KeyEvent.VK_END: string = "You pressed VK_END"; break;
    case KeyEvent.VK_ENTER: string = "You pressed VK_ENTER"; break;
    case KeyEvent.VK_EQUALS: string = "You pressed VK_EQUALS"; break;
    case KeyEvent.VK_ESCAPE: string = "You pressed VK_ESCAPE"; break;
    case KeyEvent.VK_F1: string = "You pressed VK_F1"; break;
    case KeyEvent.VK_F10: string = "You pressed VK_F10"; break;
    case KeyEvent.VK_F11: string = "You pressed VK_F11"; break;
    case KeyEvent.VK_F12: string = "You pressed VK_F12"; break;
    case KeyEvent.VK_F2: string = "You pressed VK_F2"; break;
    case KeyEvent.VK_F3: string = "You pressed VK_F3"; break;
    case KeyEvent.VK_F4: string = "You pressed VK_F4"; break;
    case KeyEvent.VK_F5: string = "You pressed VK_F5"; break;
    case KeyEvent.VK_F6: string = "You pressed VK_F6"; break;
    case KeyEvent.VK_F7: string = "You pressed VK_F7"; break;
    case KeyEvent.VK_F8: string = "You pressed VK_F8"; break;
    case KeyEvent.VK_F9: string = "You pressed VK_F9"; break;
    case KeyEvent.VK_FINAL: string = "You pressed VK_FINAL"; break;
    case KeyEvent.VK_HELP: string = "You pressed VK_HELP"; break;
    case KeyEvent.VK_HOME: string = "You pressed VK_HOME"; break;
    case KeyEvent.VK_INSERT: string = "You pressed VK_INSERT"; break;
    case KeyEvent.VK_KANA: string = "You pressed VK_KANA"; break;
    case KeyEvent.VK_KANJI: string = "You pressed VK_KANJI"; break;
    case KeyEvent.VK_LEFT: string = "You pressed VK_LEFT"; break;
    case KeyEvent.VK_META: string = "You pressed VK_META"; break;
    case KeyEvent.VK_MODECHANGE: string = "You pressed VK_MODECHANGE"; break;
    case KeyEvent.VK_MULTIPLY: string = "You pressed VK_MULTIPLY"; break;
    case KeyEvent.VK_NONCONVERT: string = "You pressed VK_NONCONVERT"; break;
    case KeyEvent.VK_NUM_LOCK: string = "You pressed VK_NUM_LOCK"; break;
    case KeyEvent.VK_OPEN_BRACKET: string = "You pressed VK_OPEN_BRACKET"; break;
    case KeyEvent.VK_PAGE_DOWN: string = "You pressed VK_PAGE_DOWN"; break;
    case KeyEvent.VK_PAGE_UP: string = "You pressed VK_PAGE_UP"; break;
    case KeyEvent.VK_PAUSE: string = "You pressed VK_PAUSE"; break;
    case KeyEvent.VK_PERIOD: string = "You pressed VK_PERIOD"; break;
    case KeyEvent.VK_PRINTSCREEN: string = "You pressed VK_PRINTSCREEN"; break;
    case KeyEvent.VK_QUOTE: string = "You pressed VK_QUOTE"; break;
    case KeyEvent.VK_RIGHT: string = "You pressed VK_RIGHT"; break;
    case KeyEvent.VK_SCROLL_LOCK: string = "You pressed VK_SCROLL_LOCK"; break;
    case KeyEvent.VK_SEMICOLON: string = "You pressed VK_SEMICOLON"; break;
    case KeyEvent.VK_SEPARATER: string = "You pressed VK_SEPARATER"; break;
    case KeyEvent.VK_SHIFT: string = "You pressed VK_SHIFT"; break;
    case KeyEvent.VK_SLASH: string = "You pressed VK_SLASH"; break;
    case KeyEvent.VK_SPACE: string = "You pressed VK_SPACE"; break;
    case KeyEvent.VK_SUBTRACT: string = "You pressed VK_SUBTRACT"; break;
    case KeyEvent.VK_TAB: string = "You pressed VK_TAB"; break;
    case KeyEvent.VK_UNDEFINED: string = "You pressed VK_UNDEFINED"; break;
    case KeyEvent.VK_UP: string = "Y0u pressed VK_UP"; break;
    case KeyEvent.VK_A: string = "You pressed VK_A"; break;
    case KeyEvent.VK_B: string = "You pressed VK_B"; break;
    case KeyEvent.VK_C: string = "You pressed VK_C"; break;
    case KeyEvent.VK_D: string = "You pressed VK_D"; break;
    case KeyEvent.VK_E: string = "You pressed VK_E"; break;
    case KeyEvent.VK_F: string = "You pressed VK_F"; break;
    case KeyEvent.VK_G: string = "You pressed VK_G"; break;
    case KeyEvent.VK_H: string = "You pressed VK_H"; break;
    case KeyEvent.VK_I: string = "You pressed VK_I"; break;
    case KeyEvent.VK_J: string = "You pressed VK_J"; break;
    case KeyEvent.VK_K: string = "You pressed VK_K"; break;
    case KeyEvent.VK_L: string = "You pressed VK_L"; break;
    case KeyEvent.VK_M: string = "You pressed VK_M"; break;
    case KeyEvent.VK_N: string = "You pressed VK_N"; break;
    case KeyEvent.VK_O: string = "You pressed VK_O"; break;
    case KeyEvent.VK_P: string = "You pressed VK_P"; break;
    case KeyEvent.VK_Q: string = "You pressed VK_Q"; break;
    case KeyEvent.VK_R: string = "You pressed VK_R"; break;
    case KeyEvent.VK_S: string = "You pressed VK_S"; break;
    case KeyEvent.VK_T: string = "You pressed VK_T"; break;
    case KeyEvent.VK_U: string = "You pressed VK_U"; break;
    case KeyEvent.VK_V: string = "You pressed VK_V"; break;
    case KeyEvent.VK_W: string = "You pressed VK_W"; break;
    case KeyEvent.VK_X: string = "You pressed VK_X"; break;
    case KeyEvent.VK_Y: string = "You pressed VK_Y"; break;
    case KeyEvent.VK_Z: string = "You pressed VK_Z"; break;
    case KeyEvent.VK_0: string = "You pressed VK_0"; break;
    case KeyEvent.VK_1: string = "You pressed VK_1"; break;
    case KeyEvent.VK_2: string = "You pressed VK_2"; break;
    case KeyEvent.VK_3: string = "You pressed VK_3"; break;
    case KeyEvent.VK_4: string = "You pressed VK_4"; break;
    case KeyEvent.VK_5: string = "You pressed VK_5"; break;
    case KeyEvent.VK_6: string = "You pressed VK_6"; break;
    case KeyEvent.VK_7: string = "You pressed VK_7"; break;
    case KeyEvent.VK_8: string = "You pressed VK_8"; break;
    case KeyEvent.VK_9: string = "You pressed VK_9"; break;
    case KeyEvent.VK_NUMPAD0: string = "You pressed VK_NUMPAD0"; break;
    case KeyEvent.VK_NUMPAD1: string = "You pressed VK_NUMPAD1"; break;
    case KeyEvent.VK_NUMPAD2: string = "You pressed VK_NUMPAD2"; break;
    case KeyEvent.VK_NUMPAD3: string = "You pressed VK_NUMPAD3"; break;
    case KeyEvent.VK_NUMPAD4: string = "You pressed VK_NUMPAD4"; break;
    case KeyEvent.VK_NUMPAD5: string = "You pressed VK_NUMPAD5"; break;
    case KeyEvent.VK_NUMPAD6: string = "You pressed VK_NUMPAD6"; break;
    case KeyEvent.VK_NUMPAD7: string = "You pressed VK_NUMPAD7"; break;
    case KeyEvent.VK_NUMPAD8: string = "You pressed VK_NUMPAD8"; break;
    case KeyEvent.VK_NUMPAD9: string = "You pressed VK_NUMPAD9"; break;
    }
    output.setText(string);

    }

    public void keyReleased(KeyEvent event) {

    }

    }

    Output