ButtonApp2: ButtonFill.java

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

public class ButtonFill extends JButton implements ActionListener {
    private Square square;
    private boolean buttonState = false;
    
    public ButtonFill (Square square) {
	this.square = square;
	setText ("Filled");
	setFont (new Font("SansSerif", Font.ITALIC, 14));
	setForeground (Color.BLUE);
	setBorder (new LineBorder(Color.GREEN, 2));
	addActionListener (this);
    }

    public void actionPerformed (ActionEvent e) {
	buttonState = ! buttonState;
	if (buttonState) square.doAction (Square.ButtonAction.FILL);
	else square.doAction (Square.ButtonAction.EMPTY);

	// Also update button label
	if (buttonState) setText ("Empty");
	else setText ("Filled");
    }
}
[download file]