import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ButtonFill extends TextButton { private boolean buttonState = false; //*2 We remember current state, so can toggle it public ButtonFill (Square square) { super (square, null, "Filled"); //*1 Supply relevant args to superclasses } // We override this one public void actionPerformed (ActionEvent e) { //*3 We override callback buttonState = ! buttonState; //*2 if (buttonState) square.doAction (Square.ButtonAction.FILL); //*3 else square.doAction (Square.ButtonAction.EMPTY); //*3 // Also update button label if (buttonState) setText ("Empty"); //*4 Also update button label else setText ("Filled"); //*4 } }