import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; /** * Main program for Button4 */ public class Main extends JFrame { /** The squares */ private Square square1, square2, square3; 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 Canvas canvas = new Canvas (this); add (canvas, BorderLayout.CENTER); /* * Now create the square and its associated buttons */ square1 = new Square (canvas); // 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)); controls1.add (new ButtonRight (square1)); controls1.add (new ButtonBigger (square1)); controls1.add (new ButtonSmaller (square1)); controls1.add (new ButtonFill (square1)); /* * Another square */ square2 = new ColSquare (canvas, Color.RED); 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); 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); add (controls, BorderLayout.SOUTH); setVisible (true); } public void drawSquares (Graphics g) { // For each square (this could be an array) square1.draw (g); square2.draw (g); square3.draw (g); } }