/** 1 Experiment with replacing the two-paramter add methods with the one-parameter add method. What happens and why? 2 Fix the commented-out line with mousePanel.addMouseMotionListener( ?? ) so that the motion of the mouse in the mousPanel can be monitored. 3 Add code so that the timestamp appears in the output text for each event */ import java.awt.Color; import java.awt.BorderLayout; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class MouseDemo { public static void main( String args[] ) { MouseFrame mf = new MouseFrame(); mf.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); mf.setSize( 300, 100 ); mf.setVisible( true ); } } class MouseFrame extends JFrame { private JPanel mousePanel; // panel in which mouse events will be monitored private JLabel statusBar; // label that displays event information // MouseFrame constructor sets up GUI and registers mouse event handlers public MouseFrame() { super( "Demonstrating Mouse Events" ); mousePanel = new JPanel(); mousePanel.setBackground( Color.WHITE ); add( mousePanel, BorderLayout.CENTER ); statusBar = new JLabel( "Mouse outside JPanel" ); add( statusBar, BorderLayout.SOUTH ); mousePanel.addMouseListener( new MouseHandler() ); //mousePanel.addMouseMotionListener( ?? ); } /** MouseHandler implements the 5 methods: mouseClicked, mousePressed, mouseReleased, mouseEntered, and mouseExited as specified by the interface definition (see docs/api/java/awt/event/MouseListener.html) */ private class MouseHandler implements MouseListener { public void mouseClicked( MouseEvent event ) { statusBar.setText( "Mouse clicked at [" +event.getX() +", " +event.getY() +"]" ); } public void mousePressed( MouseEvent event ) { statusBar.setText( "Mouse pressed at [" +event.getX() +", " +event.getY() +"]" ); } public void mouseReleased( MouseEvent event ) { statusBar.setText( "Mouse released at [" +event.getX() +", " +event.getY() +"]" ); } public void mouseEntered( MouseEvent event ) { statusBar.setText( "Mouse entered at [" +event.getX() +", " +event.getY() +"]" ); mousePanel.setBackground( Color.GREEN ); } public void mouseExited( MouseEvent event ) { statusBar.setText( "Mouse exiting" ); mousePanel.setBackground( Color.WHITE ); } } /** MouseMotionHandler implements the 2 methods: mouseDragged and mouseMoved as specified by the interface definition (see docs/api/java/awt/event/MouseMotionListener.html) */ private class MouseMotionHandler implements MouseMotionListener { public void mouseDragged( MouseEvent event ) { statusBar.setText( "Dragged at [" +event.getX() +", " +event.getY() +"]" ); } public void mouseMoved( MouseEvent event ) { statusBar.setText( "Moved at [" +event.getX() +", " +event.getY() +"]" ); } } }