public class MouseTrackerFrame extends JFrame
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: *************************************************************************/