import java.awt.*; import java.util.concurrent.*; /** * This is now just an abstract base class * for SupplyRow and ConsumerRow */ abstract public class Row { protected Canvas canvas; protected Rectangle loc; protected CopyOnWriteArrayList boxes = new CopyOnWriteArrayList (); public Row (Rectangle loc, Canvas canvas) { this.loc = loc; this.canvas = canvas; } public void draw (Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.draw (loc); // We tell each Box where to draw itself int boxsize = loc.height-2*5; Rectangle boxloc = new Rectangle (loc.x+10, loc.y+5, boxsize, boxsize); // Draw each of our Box's for (Box b: boxes) { b.draw (g, boxloc); boxloc.x = boxloc.x + boxsize + 10; } } }