// draw3D1.java opens three view windows X-Y X-Z Z-Y // opens 3D window and Menu window import java.*; import java.awt.*; import java.awt.event.*; public class draw3D1 { final int width = 300; final int height = 300; final int Mwidth = 200; int xm, ym, bm; // mouse position boolean topView = true; boolean frontView = true; boolean rightView = true; boolean gridOn = true; int xp; // last mouse location during drag int yp; boolean tracking = false; // tracking mouse motion Frame fXY, fXZ, fZY, f3D, fMenu; Graphics gXY, gXZ, gZY, g3D, gMenu; draw3D1() { System.out.println("draw3D1 starting"); new MyThread("X-Y", Mwidth, height).start(); new MyThread("X-Z", Mwidth, 0).start(); new MyThread("Z-Y", width+Mwidth, height).start(); new MyThread("3D" , width+Mwidth, 0).start(); new MyThread("Menu", 0, 0).start(); System.out.println("draw3D1 constructor ending"); } class MyThread extends Thread { String id; Graphics g; Frame f; MyThread(String who, int xLoc, int yLoc) { id = who; // initiate a window for each thread f = new Frame(); f.setTitle("draw3D1 "+who); f.setLocation(xLoc, yLoc); if(id=="Menu") f.setSize(Mwidth, 2*height); else f.setSize(width, height); f.setBackground(Color.white); f.setForeground(Color.black); f.setVisible(true); g = f.getGraphics(); // every window has its Frame, Graphics f.addWindowListener(new WindowAdapter() // and Listeners { public void windowClosing(WindowEvent e) { System.exit(0); } }); f.addMouseListener (new mousePressHandler()); f.addMouseListener (new mouseReleaseHandler()); f.addMouseMotionListener (new mouseMotionHandler()); } public void run() { try { System.out.println(id+" running"); if (id=="X-Y") {fXY=f; gXY=g;} else if(id=="X-Z") {fXZ=f; gXZ=g;} else if(id=="Z-Y") {fZY=f; gZY=g;} else if(id=="3D") {f3D=f; g3D=g;} else if(id=="Menu"){fMenu=f; gMenu=g; paint(g);} sleep(1); } catch(InterruptedException e) { } System.out.println("run exiting"); } } public void paint(Graphics g) { // call methods to do actual drawing System.out.println("paint running"); drawXY(fXY, gXY); drawXZ(fXZ, gXZ); drawZY(fZY, gZY); draw3D(f3D, g3D); drawMenu(fMenu, gMenu); } public void drawXY(Frame f, Graphics g) { System.out.println("in drawXY"); g.clearRect(0, 0, width, height); if(gridOn) for(int i=50; ix && xmy && ym