sketcher.java package sketcher; import java.awt.*; import java.awt.event.*; import java.util.Vector; public class Sketcher extends Frame { public SketchCanvas canvas; public Vector points_; public Sketcher() { setSize(500,500); setTitle("Sketch Pad"); canvas = new SketchCanvas(); add(canvas,"Center"); } public static void main(String[] args) { Sketcher frame = new Sketcher(); frame.points_ = new Vector(); WindowWatcher w = new WindowWatcher(); MouseWatcher mw = new MouseWatcher( frame.points_); frame.canvas.addMouseListener(mw); frame.canvas.addMouseMotionListener(mw); frame.setVisible(true); frame.addWindowListener(w); } public void repaint() { Graphics g = this.canvas.getGraphics(); for(int i = 0;i < points_.size();i++){ g.drawLine(points_.get(i).start.x, points_.get(i).start.y, points_.get(i).end.x, points_.get(i).end.y); } g.dispose(); } public void paint() { } public void paint(Graphics g) { } public void repaint(Graphics g) { } } sketchercanvas.java package sketcher; import java.awt.*; public class SketchCanvas extends Canvas { public void repaint() { } public void paint() { } public void paint(Graphics g) { } public void repaint(Graphics g) { } } mousewatcher.java package sketcher; import java.awt.*; import java.awt.event.*; import java.util.Vector; public class MouseWatcher extends MouseAdapter implements MouseMotionListener { private Point currentPoint, oldPoint; private Vector points_; public MouseWatcher(Vector points) { points_ = points; } public void mousePressed(MouseEvent e) { oldPoint = e.getPoint(); } public void mouseReleased(MouseEvent e) { } public void mouseDragged(MouseEvent e) { currentPoint = e.getPoint(); Graphics g = ((Canvas)e.getSource()).getGraphics(); g.drawLine(oldPoint.x, oldPoint.y, currentPoint.x, currentPoint.y); points_.add(new PointPair(oldPoint, currentPoint)); oldPoint = currentPoint; g.dispose(); } public void mouseMoved(MouseEvent e) {} } windowwatcher.java package sketcher; import java.awt.*; import java.awt.event.*; public class WindowWatcher extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } public void windowDeactivated(WindowEvent e) { e.getWindow().repaint(); } public void windowActivated(WindowEvent e) { e.getWindow().repaint(); } } pointpair.java package sketcher; import java.awt.*; public class PointPair { public Point start; public Point end; public PointPair(Point start_, Point end_){ start = start_; end = end_; } }