import java.awt.*;
import javax.swing.*;
import java.util.concurrent.*; //*3 Use special thread-safe implementations
/**
* Main program for Threads demo
*/
public class Main {
/** Our Row's */
private CopyOnWriteArrayList<Row> rows = new CopyOnWriteArrayList<Row> (); //*3
public static void main (String [] args) {
java.awt.EventQueue.invokeLater (new Runnable() {
public void run() {
new Main ();
}
});
}
public Main () {
// Window setup
JFrame frame = new JFrame();
frame.setSize (500, 500);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
// Our canvas
Canvas canvas = new Canvas (this);
frame.add (canvas);
// Show our window
frame.setVisible (true);
// Now create our Row's
for (int i=0; i<5; i++) { //*1 Create our Row's and remember them in ivar
Row r = new Row (new Rectangle (10, 100+i*75, 500-40, 40), canvas); //*1
rows.add (r); //*1
}
}
public void drawCanvas (Graphics g) {
// Draw each of our Row's
for (Row r: rows) r.draw (g); //*2 Draw each of our Row's
}
}