ButtonApp4: Main.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
 * Main program for ButtonApp4
 */
public class Main extends JFrame {
    public static void main (String [] args) {
	java.awt.EventQueue.invokeLater (new Runnable() {
            public void run() {
		new Main ();
            }
        });
    }

    public Main () {
	// Window setup
	setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
	setSize (500, 500);
	setLayout (new BorderLayout());

	// Our canvas
	Model model; //*1 Pass object after it exists
	Canvas canvas = new Canvas (); //*1
	add (canvas, BorderLayout.CENTER);
	
	// Model object, holds the "application" data
	model = new Model (5, canvas); //*1

	// Didn't have this when we called Canvas constructor
	canvas.setModel (model); //*1

	// Grid container to hold our control panels
	JPanel controls = new JPanel ();
	controls.setLayout (new GridLayout(2, 1));
	controls.add (new ControlGlobal (model));
	controls.add (new ControlSingle (model));
	add (controls, BorderLayout.SOUTH);

	setVisible (true);
    }
}
[download file]