Draw2: Main.java

/*
 * Drawing in a Canvas
 * RIGHT WAY -- Does drawing in a callback
 */

import java.awt.*; //*4 Can import whole packages this way
import javax.swing.*; //*4

public class Main extends JFrame {
    public static void main (String [] args) {
	java.awt.EventQueue.invokeLater (new Runnable() {
            public void run() {
		new Main ();
            }
        });
    }

    public Main () {
	// Window setup
	setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
	setSize (300, 300);
	
	// Put a Canvas in
	Canvas canvas = new Canvas (); //*1 Create a canvas and put in our window
	add (canvas); //*1
    
	// Show the window
	setVisible (true); //*3 Automatically triggers an initial first "repaint"

	// No drawing here, do it in Canvas callback
	//*2 No drawing here
    }
}

[download file]