Source of MouseTrackerFrame.java


  1: // Fig. 11.28: MouseTrackerFrame.java
  2: // Demonstrating mouse events.
  3: import java.awt.Color;
  4: import java.awt.BorderLayout;
  5: import java.awt.event.MouseListener;
  6: import java.awt.event.MouseMotionListener;
  7: import java.awt.event.MouseEvent;
  8: import javax.swing.JFrame;
  9: import javax.swing.JLabel;
 10: import javax.swing.JPanel;
 11: 
 12: public class MouseTrackerFrame extends JFrame
 13: {
 14:    private JPanel mousePanel; // panel in which mouse events will occur
 15:    private JLabel statusBar; // label that displays event information
 16: 
 17:    // MouseTrackerFrame constructor sets up GUI and 
 18:    // registers mouse event handlers
 19:    public MouseTrackerFrame()
 20:    {
 21:       super( "Demonstrating Mouse Events" );
 22: 
 23:       mousePanel = new JPanel(); // create panel
 24:       mousePanel.setBackground( Color.WHITE ); // set background color
 25:       add( mousePanel, BorderLayout.CENTER ); // add panel to JFrame
 26: 
 27:       statusBar = new JLabel( "Mouse outside JPanel" ); 
 28:       add( statusBar, BorderLayout.SOUTH ); // add label to JFrame
 29: 
 30:       // create and register listener for mouse and mouse motion events
 31:       MouseHandler handler = new MouseHandler(); 
 32:       mousePanel.addMouseListener( handler ); 
 33:       mousePanel.addMouseMotionListener( handler ); 
 34:    } // end MouseTrackerFrame constructor
 35: 
 36:    private class MouseHandler implements MouseListener, 
 37:       MouseMotionListener 
 38:    {
 39:       // MouseListener event handlers
 40:       // handle event when mouse released immediately after press
 41:       public void mouseClicked( MouseEvent event )
 42:       {
 43:          statusBar.setText( String.format( "Clicked at [%d, %d]", 
 44:             event.getX(), event.getY() ) );
 45:       } // end method mouseClicked
 46: 
 47:       // handle event when mouse pressed
 48:       public void mousePressed( MouseEvent event )
 49:       {
 50:          statusBar.setText( String.format( "Pressed at [%d, %d]", 
 51:             event.getX(), event.getY() ) );
 52:       } // end method mousePressed
 53: 
 54:       // handle event when mouse released after dragging
 55:       public void mouseReleased( MouseEvent event )
 56:       {
 57:          statusBar.setText( String.format( "Released at [%d, %d]", 
 58:             event.getX(), event.getY() ) );
 59:       } // end method mouseReleased
 60: 
 61:       // handle event when mouse enters area
 62:       public void mouseEntered( MouseEvent event )
 63:       {
 64:          statusBar.setText( String.format( "Mouse entered at [%d, %d]", 
 65:             event.getX(), event.getY() ) );
 66:          mousePanel.setBackground( Color.GREEN );
 67:       } // end method mouseEntered
 68: 
 69:       // handle event when mouse exits area
 70:       public void mouseExited( MouseEvent event )
 71:       {
 72:          statusBar.setText( "Mouse outside JPanel" );
 73:          mousePanel.setBackground( Color.WHITE );
 74:       } // end method mouseExited
 75: 
 76:       // MouseMotionListener event handlers
 77:       // handle event when user drags mouse with button pressed
 78:       public void mouseDragged( MouseEvent event )
 79:       {
 80:          statusBar.setText( String.format( "Dragged at [%d, %d]", 
 81:             event.getX(), event.getY() ) );
 82:       } // end method mouseDragged
 83: 
 84:       // handle event when user moves mouse
 85:       public void mouseMoved( MouseEvent event )
 86:       {
 87:          statusBar.setText( String.format( "Moved at [%d, %d]", 
 88:             event.getX(), event.getY() ) );
 89:       } // end method mouseMoved
 90:    } // end inner class MouseHandler
 91: } // end class MouseTrackerFrame
 92: 
 93: /**************************************************************************
 94:  * (C) Copyright 1992-2005 by Deitel & Associates, Inc. and               *
 95:  * Pearson Education, Inc. All Rights Reserved.                           *
 96:  *                                                                        *
 97:  * DISCLAIMER: The authors and publisher of this book have used their     *
 98:  * best efforts in preparing the book. These efforts include the          *
 99:  * development, research, and testing of the theories and programs        *
100:  * to determine their effectiveness. The authors and publisher make       *
101:  * no warranty of any kind, expressed or implied, with regard to these    *
102:  * programs or to the documentation contained in these books. The authors *
103:  * and publisher shall not be liable in any event for incidental or       *
104:  * consequential damages in connection with, or arising out of, the       *
105:  * furnishing, performance, or use of these programs.                     *
106:  *************************************************************************/