1 / 5

Mouse Listeners

Mouse Listeners. Moving the mouse will also generate events like the Timer To have your program respond, you must implement either or both of MouseListener and MouseMotionListener

aulii
Download Presentation

Mouse Listeners

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Mouse Listeners • Moving the mouse will also generate events like the Timer • To have your program respond, you must implement either or both of MouseListener and MouseMotionListener • this is a bit more involved than the ActionListener for the Timer because there are 7 methods that must be implemented between the two Listeners • Fortunately, we can implement most as empty methods • public void mouseMoved(MouseEvent e) { } // does nothing • We will often keep track of where the mouse is or where it was and now where it has been moved to • example: when the mouse button is pressed, remember it’s x and y coordinates, when the mouse button is released, remember the new x and y coordinates, now draw a line from (old x, old y) to (new x, new y) • In such a way, we can build a “paint” type program

  2. Mouse Listeners and Methods • Two types of listeners for the mouse: • MouseListener – deals with mouse button operations and must implement the following methods: • mousePressed • mouseReleased • mouseClicked • mouseEntered • mouseExited • when you hold down the mouse button or click the mouse button, both mousePressed and mouseClicked are called, when you release the mouse button or click the mouse button, both mouseReleased and mouseClicked are called • we won’t be using mouseEntered or mouseExited here • MouseMotionListener – deals with moving the mouse • mouseMoved • mouseDragged • To specify that your program should listen for mouse events, you add the following instructions in your constructor: • addMouseListener(this); • addMouseMotionListener(this);

  3. Example: Drawing a line • Here, we see how to use the MouseListener to draw a line on a JPanel when the mouse is dragged • As usual, we have created a JFrame which itself adds the JPanel below (MouseExample) to its contents public class MouseExample extends JPanel implements MouseListener { private int x1, x2, y1, y2; public MouseExample( ) { x1 = x2 = y1 = y2 = 0; addMouseListener(this); } public void mousePressed(MouseEvent e) { x1 = e.getX( ); y1 = e.getY( ); } public void mouseReleased(MouseEvent e) { x2 = e.getX( ); y2 = e.getY( ); repaint( ); } public void paintComponent(Graphics g) { g.setColor(Color.black); g.drawLine(x1, y1, x2, y2); } } // end class We would also implement mouseEntered, mouseExited and mouseClicked as { }

  4. Example 2: Drawing dots • Here, we place a dot every time you drag the mouse public class DotDrawer extends JPanel implements MouseMotionListener { private static int x, y; public DotDrawer( ) { x = y = 0; addMouseMotionListener(this); } public void mouseDragged(MouseEvent e) { x = e.getX( ); y = e.getY( ); repaint( ); } public void mouseMoved(MouseEvent e) { } public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.blue); g.fillOval(x-1, y-1, 2, 2); } } // end class

  5. Storing Graphics Items • If you notice, the previous program performs super.paintComponent(g); while the program before did not • this instruction cases the JPanel’s Graphics object to clear itself • if we do this, then we lose what we had already drawn • but if we don’t do this, the image can become cluttered • What we want to do is perform this operation every time we do repaint( ) but we want to also draw each previous Graphics item on the screen • so we have to remember everything we had already done • we will store each item by using arrays • for our dots program, we can store each dot’s x and y coordinate an two arrays, x[i] and y[i] (for dot i) • This is the first step toward building a more interesting Graphics program • Paint/drawing program • Computer game that has multiple Graphics items on the screen

More Related