ButtonApp1 (with BAD modularization): Canvas.java

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

/**
 * Our canvas
 */
public class Canvas extends JPanel implements MouseListener {
    public Canvas () {
	setBorder (new LineBorder(Color.BLUE));
	addMouseListener (this);
    }

    public void paintComponent (Graphics g) { //*1 Use "global" data in Main class
	super.paintComponent(g); // Always supposed to do this first
	Graphics2D g2 = (Graphics2D) g;

	if (Main.filled) g2.fill (Main.square); //*1
	else g2.draw (Main.square); //*1
    }

    /** MouseListener callbacks */
    public void mousePressed (MouseEvent event) {	
	System.out.println ("Mouse down at " + event.getPoint().x + ", " + event.getPoint().y);
    }
    public void mouseClicked (MouseEvent event) {}
    public void mouseReleased (MouseEvent event) {}
    public void mouseEntered (MouseEvent event) {}
    public void mouseExited (MouseEvent event) {}
}
[download file]