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(); } }