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<Row> rows = new CopyOnWriteArrayList<Row> (); 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), //*1 One supply row canvas); //*1 rows.add (supply); //*1 // 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), //*2 5 Consumer rows canvas, supply); //*2 rows.add (r); //*2 } } public void drawCanvas (Graphics g) { // Draw each of our Row's for (Row r: rows) r.draw (g); //*3 Draw all of our Row's (polymorphism) } }