import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class ButtonLeft extends JButton implements ActionListener { private Square square; //*2 Keep pointer to square we control public ButtonLeft (Square square) { this.square = square; //*2 setIcon (new ImageIcon ("leftArrow.gif")); //*1 Handle our own properties setup setBorder (new LineBorder(Color.GREEN, 2)); //*1 addActionListener (this); //*3 Handle our own callback } public void actionPerformed (ActionEvent e) { //*3 square.doAction (Square.ButtonAction.LEFT); //*4 Call square to do the job } }