import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* Main program for Button4
*/
public class Main {
/** The squares */
private Square square1, square2, square3; //*2 Polymorphism on Square
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.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.setSize (500, 500);
frame.setLayout (new BorderLayout());
// Our canvas
Canvas canvas = new Canvas (this);
frame.add (canvas, BorderLayout.CENTER);
/*
* Now create the square and its associated buttons
*/
square1 = new Square (canvas); //*2
// Control panel for the square
JPanel controls1 = new JPanel ();
controls1.setBorder (new LineBorder(Color.BLUE));
controls1.setLayout (new FlowLayout());
// Create our buttons by instantiating them
// turns out we don't need to remember them,
// just to add() them to panel layout
controls1.add (new ButtonLeft (square1)); //*1 Users of button classes are unchanged
controls1.add (new ButtonRight (square1)); //*1
controls1.add (new ButtonBigger (square1)); //*1
controls1.add (new ButtonSmaller (square1)); //*1
controls1.add (new ButtonFill (square1)); //*1
/*
* Another square
*/
square2 = new ColSquare (canvas, Color.RED); //*2
JPanel controls2 = new JPanel ();
controls2.setBorder (new LineBorder(Color.BLUE));
controls2.setLayout (new FlowLayout());
// Create our buttons
controls2.add (new ButtonLeft (square2));
controls2.add (new ButtonRight (square2));
controls2.add (new ButtonBigger (square2));
controls2.add (new ButtonSmaller (square2));
controls2.add (new ButtonFill (square2));
/*
* A third square, of a different color
*/
square3 = new ColSquare (canvas, Color.GREEN); //*2
JPanel controls3 = new JPanel ();
controls3.setBorder (new LineBorder(Color.BLUE));
controls3.setLayout (new FlowLayout());
// Create our buttons
controls3.add (new ButtonLeft (square3));
controls3.add (new ButtonRight (square3));
controls3.add (new ButtonBigger (square3));
controls3.add (new ButtonSmaller (square3));
controls3.add (new ButtonFill (square3));
// Need a grid container to hold our panels
JPanel controls = new JPanel ();
controls.setLayout (new GridLayout(3, 1));
controls.add (controls1);
controls.add (controls2);
controls.add (controls3);
frame.add (controls, BorderLayout.SOUTH);
frame.setVisible (true);
}
public void drawSquares (Graphics g) {
// For each square (this could be an array)
square1.draw (g); //*2
square2.draw (g); //*2
square3.draw (g); //*2
}
}