ButtonApp2: Square.java

import java.awt.*;

/**
 * Square holds the "model" data for one square
 */
public class Square {
    /** Enumerated type for which action to take */
    public enum ButtonAction {LEFT, RIGHT, BIGGER, SMALLER, FILL, EMPTY}; //*5 Java enumerated type

    /** The model data */
    private Rectangle loc = new Rectangle (100, 50, 50, 50); //*1 The model data
    private boolean filled = false; //*1

    private Canvas canvas;

    public Square (Canvas canvas) {
	this.canvas = canvas;
    }

    public void draw (Graphics g) { //*2 Draw the square
	Graphics2D g2 = (Graphics2D) g;

	if (filled) g2.fill (loc); //*2
	else g2.draw (loc); //*2
    }

    public void doAction (ButtonAction action) { //*3 Handle actions
	if (action==ButtonAction.LEFT) loc.x -= 10; //*3
	else if (action==ButtonAction.RIGHT) loc.x += 10; //*3
	else if (action==ButtonAction.BIGGER) { loc.width += 10; loc.height += 10; } //*3
	else if (action==ButtonAction.SMALLER) { loc.width -= 10; loc.height -= 10; } //*3
	else if (action==ButtonAction.FILL) filled = true; //*3
	else if (action==ButtonAction.EMPTY) filled = false; //*3

	canvas.repaint(); //*4 Need full repaint in case action exposed the other square
    }
}

[download file]