import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class Draw extends JFrame { private Paper p; public static void main(String[] args) { new Draw(args); } public Draw(String[] args) { setDefaultCloseOperation(EXIT_ON_CLOSE); p = new Paper(args); getContentPane().add(p, BorderLayout.CENTER); setSize(640, 480); setVisible(true); } } class Paper extends JPanel { private Net net; HashSet hs = new HashSet(); public Paper(String[] args) { setBackground(Color.white); addMouseListener(new L1()); addMouseMotionListener(new L2()); net = new Net(this, args); } public synchronized void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.black); Iterator i = hs.iterator(); while(i.hasNext()) { Point p = (Point)i.next(); g.fillOval(p.x, p.y, 2, 2); } } public synchronized void addPoint(Point p) { hs.add(p); repaint(); net.send(Integer.toString(p.x) + " " + Integer.toString(p.y)); } public synchronized void addPoint(String message) { String[] xy = message.split(" "); Point p = new Point(Integer.parseInt(xy[0]), Integer.parseInt(xy[1])); hs.add(p); repaint(); } class L1 extends MouseAdapter { public void mousePressed(MouseEvent me) { addPoint(me.getPoint()); } } class L2 extends MouseMotionAdapter { public void mouseDragged(MouseEvent me) { addPoint(me.getPoint()); } } }