19
Mouse Events

Mouse Events

Embed Size (px)

DESCRIPTION

Mouse Events. Handling Mouse Events. Java provides two listener interfaces to handle mouse events: MouseListener; MouseMotionListener . The MouseListener listens for actions such as when the mouse is pressed, released, entered, exited, or clicked . - PowerPoint PPT Presentation

Citation preview

Page 1: Mouse Events

Mouse Events

Page 2: Mouse Events

Handling Mouse EventsJava provides two listener interfaces to handle mouse

events: MouseListener;MouseListener; MouseMotionListenerMouseMotionListener.

The MouseListener listens for actions such as when the

mouse is pressed, released, entered, exited, or clicked.

The MouseMotionListener listens for actions such as dragging or moving the mouse.

Page 3: Mouse Events

MouseListener Methods mouseEntered(MouseEvent e)

mouseExited(MouseEvent e)

mousePressed(MouseEvent e)

mouseReleased(MouseEvent e)

mouseClicked(MouseEvent e)

Page 4: Mouse Events

MouseMotionListener Methods

mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

Page 5: Mouse Events

MouseEventMouseEvent Class ClassSince the MouseEvent class inherits InputEvent,

you can use the methods defined in the InputEvent class:

public boolean ifAltDown()

public boolean ifControlDown()

public boolean ifShiftDown()

public boolean ifMetaDown() (the right mouse button is pressed)

Page 6: Mouse Events

Methods of MouseEvent Class public int getClickCount() public int getX() public int getY() public Point getPoint()

Page 7: Mouse Events

MouseMotionListener Methods mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

Methods public int getX() public int getY() public Point getPoint()

Page 8: Mouse Events

Example 1: mouse is clickedimport javax.*;import java.awt.*;public class TestMouse { public TestMouse() { setTitle(“Test Mouse”); getContentPane().add(new MousePanel()); } public static void main(Strings[] args) { TestMouse frame = new TestMouse(); frame.setSize(300,300); frame.setVisible(true); frame.setDefaultCloseOperation(

JFrame.EXIT_ON_CLOSE); }}

Page 9: Mouse Events

Example 1: mouse is clicked class MousePanel extends JPanel implements MouseListener { int mx, my; public MousePanel() { addMouseListener(this) } // Implement allall methods declared in MouseListener // interface! public void mousePressed(MouseEvent e) { } public void mouseReleassed(MouseEvent e) { } public void mouseExited (MouseEvent e) { } public void mouseFocus(MouseEvent e) { } public void mouseClicked(MouseEvent e) { mx = getX(); my = getY(); // System.out.println(“Clicked at (“+mx +“,”+my + ”)”); repaint(); } ...

Page 10: Mouse Events

Example 1: Mouse is clicked … public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.red); g.drawRect(mx-20, my-20, 40, 40); }

} // Inner Class MousePanel}// Outer Class TestMouse

Page 11: Mouse Events

Example 2: Mouse is draggedclass MousePanel2 extends JPanel implements MouseMotionListener { int mx, my; // Register the Listener public MousePanel2() { addMouseMotionListener(this) } // Implement allall methods declared in MouseMotionListener // interface public void mouseMoved(MouseEvent e) { }

public void mouseDragged(MouseEvent e) { mx = getX(); my = getY(); //System.out.println(“Mouse at (“ +mx + “,”+my+ ”)”); repaint(); } ...

Page 12: Mouse Events

Example 2: Mouse is dragged … public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.red); g.fillRect(mx-2, my-2, 4, 4); }

} // Inner Class MousePanel2}// Outer Class TestMouse

Page 13: Mouse Events

Adapter Class vs. Listener InterfaceAdapter Class vs. Listener Interface Java provides a special feature, called an adapter class, that can

simplify the creation of event handlers in certain situations. An adapter class provides an empty implementation of all methods in

an event listener interface. Adapter classes are useful when you want to receive and process only

some of the events that are handled by a particular event listener interface.

You can define a new class to act as an event listener by extending one of the adapter classes and implementing only those events in which you are interested.

Page 14: Mouse Events

Example 3 with Adapter class MousePanel3 extends JPanel { // Register the event handler int mx, my; public MousePanel3() { addMouseListener(new MyMouseAdapter()); } // Inner class extends Adapter class class MyMouseAdapter extends MouseAdapter { // Implement methods you really need public void mouseClicked(MouseEvent e) { mx = getX(); my = getX(); //System.out.println(“Clicked at (“+mx+“,”+my+”)”); repaint(); } ...

Page 15: Mouse Events

Example 3: Mouse is clicked … public void paintComponent(Graphics g) super.paintComponent(g); g.setColor(Color.red); g.fillRect(mx-20, my-20, 40, 40); } } // Inner Class MousePanel3}// Outer Class TestMouse

Page 16: Mouse Events

Example 4: Draw shapes Suppose, the method draw(Graphics g,...) is implemented for the classes Circle and Rectangle (sub-classes of the abstract class Shape). We can draw array of Shapes. … public void paintComponent(Graphics g) super.paintComponent(g); for(int k = 0; k < shapes.length; k++) { shapes[k].draw(g, mx, my); } repaint(); } } // Inner Class MousePanel4}// Outer Class TestMouse

Page 17: Mouse Events

Handling Complex Mouse Events Objective: Create a program for drawing using a mouse.

Draw by dragging with the left mouse button pressed; erase by dragging with the right button pressed.

See code and applet on web: http://www.cs.armstrong.edu/liang/introjb4/example/chapter12/ScribbleDemo.java http://www.cs.armstrong.edu/liang/introjb4/example/ScribbleDemo.html

See more examples of applets on web:

http://www.dgp.toronto.edu/~mjmcguff/learn/java/

Page 18: Mouse Events

Handling Keyboard Events

void keyPressed(KeyEvent e)

Called when a key is pressed.

void keyReleased(KeyEvent e)

Called when a key is released.

void keyTyped(KeyEvent e)

Called when a key is pressed and then released.

To process a keyboard event, use the following handlers in the KeyListener interface:

Page 19: Mouse Events

Handling Keyboard Eventschar keyChar;void keyPressed (KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_DOWN: y+= 10; break; case KeyEvent.VK_UP: y-= 10; break; case KeyEvent.VK_LEFT: x-= 10; break; case KeyEvent.VK_RIGHT: x+= 10; break; default: keyChar = e.getChar(); } repaint(); }

VK_HOME, VK_PGUP, VK_PGDN, VK_ESCAPE,

VKF1, …, VK12; VK_0, …, VK_9; VK_A, … VK_Z; ...