import javax.swing.* ;

import java.awt.* ;
import java.awt.event.* ;

import javax.swing.* ;

import com.sun.java.swing.plaf.windows.WindowsBorders ;
import com.sun.java.swing.plaf.windows.WindowsEditorPaneUI ;
import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer ;

public class Test extends JFrame implements MouseListener, MouseMotionListener
{
  int flag ;
  int x = 0 ;
  int y = 0 ;
  int startX, startY, endX, endY ;

  public static void main( String[] args )
  {
    new Test() ;
  }

  public Test()
  {
    Container paneContainer = getContentPane() ;
    paneContainer.addMouseListener( this ) ;
    paneContainer.addMouseMotionListener( this ) ;
    setSize( 300, 300 ) ;
    show() ;
    addWindowListener( new WindowAdapter()
    {
      @SuppressWarnings("unused")
      public void windowsClosing( WindowEvent e )
      {
        System.exit( 0 ) ;
      }
    } ) ;
  }

  @Override
  public void mouseClicked( MouseEvent e )
  {/*
    * label.setText( "mouseClicked" ) ; if ( e.getClickCount() == 2 ) { JFrame
    * newFrame = new JFrame( "幹" ) ; newFrame.setSize( 200, 200 ) ;
    * newFrame.show() ; }
    */
  }

  @Override
  public void mouseEntered( MouseEvent e )
  {
    // label.setText( e.getX() + " " + e.getY() ) ;

  }

  @Override
  public void mouseExited( MouseEvent e )
  {
    // TODO Auto-generated method stub
    // label.setText( "mouseExited" ) ;
  }

  @Override
  public void mousePressed( MouseEvent e )
  {
    startX = e.getX() ;
    startY = e.getY() ;
  }

  @Override
  public void mouseReleased( MouseEvent e )
  {
    endX = e.getX() ;
    endY = e.getY() ;
  }

  public void mouseMoved( MouseEvent event )
  {
    flag = 1 ;
    x = event.getX() ;
    y = event.getY() ;
    repaint() ;
  }

  public void mouseDragged( MouseEvent event )
  {
    flag = 2 ;
    x = event.getX() ;
    y = event.getY() ;
    repaint() ;
  }

  public void update( Graphics g )
  {
    // graphics.clearRect( 0, 0, getWidth(), getHeight() ) ;
    g.setColor( Color.BLUE ) ;
    g.fillRect( 0, 0, getWidth(), getHeight() ) ;
    paint( g ) ;

  }

  public void paint( Graphics graphics )
  {
    graphics.setColor( Color.black ) ;
    if ( flag == 1 )
    {
      graphics.drawString( "滑鼠:(" + x + "," + y + ")", 10, 50 ) ;
      graphics.drawLine( startX, startY, endX, endY ) ;
    } else if ( flag == 2 )
    {
      graphics.drawString( "拖曳:(" + x + "," + y + ")", 10, 50 ) ;
      graphics.drawLine( startX, startY, x, y ) ;
    }
  }

}
