import java.awt.*; import javax.swing.*; import java.util.concurrent.*; /** * Main program for Threads demo */ public class Main extends JFrame { /** Our Row's */ private CopyOnWriteArrayList rows = new CopyOnWriteArrayList (); public static void main (String [] args) { java.awt.EventQueue.invokeLater (new Runnable() { public void run() { new Main (); } }); } public Main () { // Window setup setSize (500, 500); setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); // Our canvas Canvas canvas = new Canvas (this); add (canvas); // Show our window setVisible (true); // First create our Supply row SupplyRow supply = new SupplyRow (new Rectangle (10, 10, 500-40, 40), canvas); rows.add (supply); // Now create our regular ConsumerRow's and start() them for (int i=0; i<5; i++) { Row r = new ConsumerRow (new Rectangle (10, 100+i*75, 500-40, 40), canvas, supply); rows.add (r); } } public void drawCanvas (Graphics g) { // Draw each of our Row's for (Row r: rows) r.draw (g); } }