import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class mouseTracker extends JFrame
   implements MouseListener, MouseMotionListener {

   private JLabel statusBar;
   private JLabel marqueeBar;

   public mouseTracker()
   {
      super( "Demonstrating Mouse Events" );
	  
	  statusBar = new JLabel();
	  marqueeBar = new JLabel();
      Container c = getContentPane();
      c.setLayout(new BorderLayout());
      c.add( statusBar, BorderLayout.SOUTH );
      c.add( marqueeBar, BorderLayout.NORTH );
     
      addMouseListener( this );
      addMouseMotionListener( this );

 	  setDefaultCloseOperation(EXIT_ON_CLOSE); 
      setSize( 400, 400 );
      setVisible( true );
   }

   // MouseListener event handlers

   // handle event when mouse released immediately after press
   public void mouseClicked( MouseEvent event )
   {
      marqueeBar.setText( "Clicked at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // handle event when mouse pressed
   public void mousePressed( MouseEvent event )
   {
      marqueeBar.setText( "Pressed at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // handle event when mouse released after dragging
   public void mouseReleased( MouseEvent event )
   {
      marqueeBar.setText( "Released at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // handle event when mouse enters area
   public void mouseEntered( MouseEvent event )
   {
      marqueeBar.setText( "Entered at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // handle event when mouse exits area
   public void mouseExited( MouseEvent event )
   {
      marqueeBar.setText( "Mouse outside window" );
   }

   // MouseMotionListener event handlers

   // handle event when user drags mouse with button pressed
   public void mouseDragged( MouseEvent event )
   {
      statusBar.setText( "Dragged at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // handle event when user moves mouse
   public void mouseMoved( MouseEvent event )
   {
      statusBar.setText( "Moved at [" + event.getX() +
         ", " + event.getY() + "]" );
   }

   // execute application
   public static void main( String args[] )
   { 
      mouseTracker application = new mouseTracker();
   }

}  // end class MouseTracker

