import java.awt.*;
import java.awt.event.*;

import javax.swing.*;


/**
 * @author Remi Forax
 *
 */
public class DrawJComponent extends JComponent {

  public static void main(String[] args) {
    JFrame frame=new JFrame("MyComponent");
    
    final DrawJComponent draw=new DrawJComponent();
    
    class MouseManager extends MouseAdapter implements MouseMotionListener {
      public void mouseDragged(MouseEvent event) {
        Graphics g=draw.getGraphics();
        try {
          int newX=event.getX();
          int newY=event.getY();
          g.drawLine(x,y,newX,newY);
          x=newX;
          y=newY;
        }
        finally {
          g.dispose();
        }
      }
      
      public void mouseMoved(MouseEvent e) {
      }
      
      public void mousePressed(MouseEvent event) {
        x=event.getX();
        y=event.getY();
      }
      
      private int x,y;
    };
    
    MouseManager manager=new MouseManager();
    draw.addMouseListener(manager);
    draw.addMouseMotionListener(manager);
    
    frame.getContentPane().add(draw);
    frame.setSize(400,300);
    frame.show();
  }
}
