// Drawing curve drawing import javax.swing.*; import java.awt.event.*; import java.awt.*; class Drawing extends JFrame { Drawing() { super( "Drawing" ); getContentPane().add( new DrawingingPanel() ); pack(); setVisible(true); } class DrawingingPanel extends JPanel { static final int WIDTH = 500; static final int HEIGHT = 500; int x, y; int initialX, initialY; int initialMouseX, initialMouseY; DrawingingPanel( ) { super(); setPreferredSize( new Dimension( WIDTH, HEIGHT ) ); x = 100; y = 100; addMouseListener( new MouseHandler() ); addMouseMotionListener( new MouseMotionHandler() ); } protected void paintComponent(Graphics g) { super.paintComponent(g); g.drawRect( 0, 0, WIDTH-1, HEIGHT-1 ); g.setColor( Color.RED ); g.fillRect( 50, 150, 200, 200 ); g.setColor( Color.BLUE ); g.fillRect( 250, 150, 200, 200 ); g.setColor( new Color( 0.0f, 1.0f, 0.0f, 0.5f ) ); g.fillOval( x, y, 300, 300 ); } class MouseHandler extends MouseAdapter { public void mousePressed( MouseEvent e ) { initialMouseX = e.getX(); initialMouseY = e.getY(); initialX = x; initialY = y; } } class MouseMotionHandler extends MouseMotionAdapter { public void mouseDragged( MouseEvent e ) { int deltaX = e.getX() - initialMouseX; int deltaY = e.getY() - initialMouseY; x = initialX + deltaX; y = initialY + deltaY; repaint(); } } } public static void main( String [] args ) { Drawing h = new Drawing(); } }