ButtonApp1: 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 {
    private Main parent; //*1 Save parent so can call up to it for drawing

    public Canvas (Main parent) {
        this.parent = parent; //*1
	setBorder (new LineBorder(Color.BLUE));
	addMouseListener (this);
    }

    /** We just call our parent, cause it keeps the data */
    public void paintComponent (Graphics g) { //*2 Just call our parent
	super.paintComponent(g); // Always supposed to do this first
	parent.drawSquare (g); //*2
    }

    /** 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]