/** * @Draw.java * * Utgår ifrån program enligt tips. * Jag kommenterar endast saker jag lagt till eller ändrat i filen. * * @version 1.0 06/10/01 * * */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class Draw extends JFrame { private Paper p = new Paper();; private Communicator myCommunicator; private Thread commThread; /* * Main, Kollar arguments, och * agerar utifrån dem. * * */ public static void main(String[] args) { Draw theBoard = new Draw(args); Thread commThread; } public Draw(String[] args) { setDefaultCloseOperation(EXIT_ON_CLOSE); getContentPane().add(p, BorderLayout.CENTER); setSize(640, 480); setVisible(true); // Inga args, ERROR if(null == args || args.length < 2) { System.err.println("Invalid Args; Need: host port"); } //annars ARGS else if(args!=null && args[1]!=null && args.length == 3){ Integer aport = new Integer(args[0]); Integer remotePort = new Integer(args[2]); myCommunicator = new Communicator(aport, p, args[1], remotePort,p); p.setCommunicator(myCommunicator); commThread = new Thread(myCommunicator); commThread.start(); }else{ System.out.println("Invalid arguments, exiting"); } } } class Paper extends JPanel { private HashSet hs = new HashSet(); private Communicator myCommunicator; public Paper() { setBackground(Color.white); addMouseListener(new L1()); addMouseMotionListener(new L2()); } public void setCommunicator(Communicator c){ myCommunicator = c; } public 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); } } /* * Ändrat så vi skickar datat via * communicator. */ private void addPoint(Point p) { drawPoint(p); myCommunicator.packAndsend(p); } /* * Metod som ritar utan att skicka, * motsvarar addpoint inann jag ändrade den. * Används för att rita mottagna prickar. */ public void drawPoint(Point p) { 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()); } } }