import java.awt.*; /** class to draw the graphs from bd.java @author Jeremy harris */ public class bdCanvas extends Canvas { public final int X1 = 50; public final int Y1 = 50; public final int X2 = 350; public final int Y2 = 350; public final int BY = Y2+15; public final int L1X = X1-12; public final int L2X = X1-20; public final int HORZAMT = 30; public final int VERTAMT = 10; private Point[] mypnts; private int[] mypops; private boolean points = false; private boolean axis = true; public bdCanvas() /** constructor for the canvas to be used to draw the graphs on, initializes variables and sets parameters */ { setBackground(Color.white); setForeground(Color.black); setSize(400,410); mypops = new int[10]; mypnts = new Point[10]; } public void Ok() /** sets test value to true, indicating that the sim has been run and points can now be plotted */ { points = true; } public void Plot(int[] pops) /** plots a set of points on the graph @param pops the array of values to be plotted */ { mypops = pops; repaint(); } public void paint(Graphics g) /** overloaded method of Canvas class, does all drawing on the graph */ { g.setColor(Color.black); if(axis) { g.drawLine(X1,Y1,X1,Y2); g.drawLine(X1,Y2,X2,Y2); g.drawString("0",X1,BY); /* draw x-axis values */ int x = X1+30; for(int xaxis=10;xaxis<=100;xaxis+=10) { g.drawString(String.valueOf(xaxis),x-5,BY); x += 30; } /* draw y-axis values */ int y = Y2-20; for(int yaxis=2;yaxis<=8;yaxis+=2) { g.drawString(String.valueOf(yaxis),L1X,y+5); y -= 20; } for(int yaxis=10;yaxis<=30;yaxis+=2) { g.drawString(String.valueOf(yaxis),L2X,y+5); y -= 20; } /* set labels */ g.drawString("y-axis: time, x-axis: population",X1+55,BY+30); } /* draw points and lines*/ if(points) { int x=X1; for(int k=0;k<10;k++) { mypnts[k] = new Point(x,Y2-VERTAMT*mypops[k]); g.fillRect(x,Y2-VERTAMT*mypops[k],2,2); x += 30; } for(int k=0;k<9;k++) { g.drawLine(mypnts[k].x,mypnts[k].y,mypnts[k+1].x,mypnts[k+1].y); } } } }