import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Draw3 extends JFrame {
private int topX, topY;
private int width, height, upperX, upperY;
private int bottomX, bottomY;
public Draw3()
{
super( "Draw3" );
addMouseListener( new MouseHandler( this ) );
addMouseMotionListener( new MouseHandler2( this ) );
setSize( 300, 200 );
show();
}
public void setTopX( int x ) { topX = x; }
public void setTopY( int y ) { topY = y; }
public void setBottomX( int x ) { bottomX = x; }
public void setBottomY( int y ) { bottomY = y; }
public void paint( Graphics g )
{
width = Math.abs( topX - bottomX );
height = Math.abs( topY - bottomY );
upperX = Math.min( topX, bottomX );
upperY = Math.min( topY, bottomY );
g.drawRect( upperX, upperY, width, height );
}
public static void main( String args[] )
{
Draw3 app = new Draw3();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
System.exit( 0 );
}
}
);
}
}
class MouseHandler extends MouseAdapter {
private Draw3 draw;
public MouseHandler( Draw3 d ) { draw = d; }
public void mouseReleased( MouseEvent e )
{
draw.setBottomX( e.getX() );
draw.setBottomY( e.getY() );
draw.repaint();
}
public void mousePressed( MouseEvent e )
{
draw.setTopX( e.getX() );
draw.setTopY( e.getY() );
}
}
class MouseHandler2 extends MouseMotionAdapter {
private Draw3 draw;
public MouseHandler2( Draw3 d ) { draw = d; }
public void mouseDragged( MouseEvent e )
{
draw.setBottomX( e.getX() );
draw.setBottomY( e.getY() );
draw.repaint();
}
}