Mouse Events Handling Mouse Events Java provides two

  • Slides: 19
Download presentation
Mouse Events

Mouse Events

Handling Mouse Events Java provides two listener interfaces to handle mouse events: F Mouse.

Handling Mouse Events Java provides two listener interfaces to handle mouse events: F Mouse. Listener; F Mouse. Motion. Listener The Mouse. Listener listens for actions such as when the mouse is pressed, released, entered, exited, or clicked. The Mouse. Motion. Listener listens for actions such as dragging or moving the mouse.

Mouse. Listener Methods F mouse. Entered(Mouse. Event e) F mouse. Exited(Mouse. Event e) F

Mouse. Listener Methods F mouse. Entered(Mouse. Event e) F mouse. Exited(Mouse. Event e) F mouse. Pressed(Mouse. Event e) F mouse. Released(Mouse. Event e) F mouse. Clicked(Mouse. Event e)

Mouse. Motion. Listener Methods F mouse. Dragged(Mouse. Event e) F mouse. Moved(Mouse. Event e)

Mouse. Motion. Listener Methods F mouse. Dragged(Mouse. Event e) F mouse. Moved(Mouse. Event e)

Mouse. Event Class Since the Mouse. Event class inherits Input. Event, you can use

Mouse. Event Class Since the Mouse. Event class inherits Input. Event, you can use the methods defined in the Input. Event class: F public boolean if. Alt. Down() F public boolean if. Control. Down() F public boolean if. Shift. Down() F public boolean if. Meta. Down() (the right mouse button is pressed)

Methods of Mouse. Event Class F public int get. Click. Count() F public int

Methods of Mouse. Event Class F public int get. Click. Count() F public int get. X() F public int get. Y() F public Point get. Point()

Mouse. Motion. Listener Methods F mouse. Dragged(Mouse. Event e) F mouse. Moved(Mouse. Event e)

Mouse. Motion. Listener Methods F mouse. Dragged(Mouse. Event e) F mouse. Moved(Mouse. Event e) Methods F public int get. X() F public int get. Y() F public Point get. Point()

Example 1: mouse is clicked import javax. *; import java. awt. *; public class

Example 1: mouse is clicked import javax. *; import java. awt. *; public class Test. Mouse { public Test. Mouse() { set. Title(“Test Mouse”); get. Content. Pane(). add(new Mouse. Panel()); } public static void main(Strings[] args) { Test. Mouse frame = new Test. Mouse(); frame. set. Size(300, 300); frame. set. Visible(true); frame. set. Default. Close. Operation( JFrame. EXIT_ON_CLOSE); } }

Example 1: mouse is clicked class Mouse. Panel extends JPanel implements Mouse. Listener {

Example 1: mouse is clicked class Mouse. Panel extends JPanel implements Mouse. Listener { int mx, my; public Mouse. Panel() { add. Mouse. Listener(this) } // Implement all methods declared in Mouse. Listener // interface! public void mouse. Pressed(Mouse. Event e) { } public void mouse. Releassed(Mouse. Event e) { } public void mouse. Exited (Mouse. Event e) { } public void mouse. Focus(Mouse. Event e) { } public void mouse. Clicked(Mouse. Event e) { mx = get. X(); my = get. Y(); // System. out. println(“Clicked at (“+mx +“, ”+my + ”)”); repaint(); }. . .

Example 1: Mouse is clicked … public void paint. Component(Graphics g) super. paint. Component(g);

Example 1: Mouse is clicked … public void paint. Component(Graphics g) super. paint. Component(g); g. set. Color(Color. red); g. draw. Rect(mx-20, my-20, 40); } } // Inner Class Mouse. Panel }// Outer Class Test. Mouse

Example 2: Mouse is dragged class Mouse. Panel 2 extends JPanel implements Mouse. Motion.

Example 2: Mouse is dragged class Mouse. Panel 2 extends JPanel implements Mouse. Motion. Listener { int mx, my; // Register the Listener public Mouse. Panel 2() { add. Mouse. Motion. Listener(this) } // Implement all methods declared in Mouse. Motion. Listener // interface public void mouse. Moved(Mouse. Event e) { } public void mouse. Dragged(Mouse. Event e) { mx = get. X(); my = get. Y(); //System. out. println(“Mouse at (“ +mx + “, ”+my+ ”)”); repaint(); }. . .

Example 2: Mouse is dragged … public void paint. Component(Graphics g) super. paint. Component(g);

Example 2: Mouse is dragged … public void paint. Component(Graphics g) super. paint. Component(g); g. set. Color(Color. red); g. fill. Rect(mx-2, my-2, 4, 4); } } // Inner Class Mouse. Panel 2 }// Outer Class Test. Mouse

Adapter Class vs. Listener Interface F F Java provides a special feature, called an

Adapter Class vs. Listener Interface F F 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.

Example 3 with Adapter class Mouse. Panel 3 extends JPanel { // Register the

Example 3 with Adapter class Mouse. Panel 3 extends JPanel { // Register the event handler int mx, my; public Mouse. Panel 3() { add. Mouse. Listener(new My. Mouse. Adapter()); } // Inner class extends Adapter class My. Mouse. Adapter extends Mouse. Adapter { // Implement methods you really need public void mouse. Clicked(Mouse. Event e) { mx = get. X(); my = get. X(); //System. out. println(“Clicked at (“+mx+“, ”+my+”)”); repaint(); }. . .

Example 3: Mouse is clicked … public void paint. Component(Graphics g) super. paint. Component(g);

Example 3: Mouse is clicked … public void paint. Component(Graphics g) super. paint. Component(g); g. set. Color(Color. red); g. fill. Rect(mx-20, my-20, 40); } } // Inner Class Mouse. Panel 3 }// Outer Class Test. Mouse

Example 4: Draw shapes F Suppose, the method draw(Graphics g, . . . )

Example 4: Draw shapes F 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 paint. Component(Graphics g) super. paint. Component(g); for(int k = 0; k < shapes. length; k++) { shapes[k]. draw(g, mx, my); } repaint(); } } // Inner Class Mouse. Panel 4 }// Outer Class Test. Mouse

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

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. F See code and applet on web: F http: //www. cs. armstrong. edu/liang/introjb 4/example/chapter 12/Scribble. De mo. java http: //www. cs. armstrong. edu/liang/introjb 4/example/Scribble. Demo. html F See more examples of applets on web: http: //www. dgp. toronto. edu/~mjmcguff/learn/java/

Handling Keyboard Events To process a keyboard event, use the following handlers in the

Handling Keyboard Events To process a keyboard event, use the following handlers in the Key. Listener interface: F void key. Pressed(Key. Event e) Called when a key is pressed. F void key. Released(Key. Event e) Called when a key is released. F void key. Typed(Key. Event e) Called when a key is pressed and then released.

Handling Keyboard Events char key. Char; void key. Pressed (Key. Event e) { switch(e.

Handling Keyboard Events char key. Char; void key. Pressed (Key. Event e) { switch(e. get. Key. Code()) { case Key. Event. VK_DOWN: y+= 10; case Key. Event. VK_UP: y-= 10; case Key. Event. VK_LEFT: x-= 10; case Key. Event. VK_RIGHT: x+= 10; default: key. Char = e. get. Char(); } repaint(); } break; VK_HOME, VK_PGUP, VK_PGDN, VK_ESCAPE, VKF 1, …, VK 12; VK_0, …, VK_9; VK_A, … VK_Z; . . .