Timeout1: Main.java

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

public class Main extends JFrame
implements ActionListener { //*3 Timer callback
    /**
     * State of the animation, just a counter
     */
    private int frameNumber = 1; //*1 Frame counter
    
    private Canvas canvas;

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

    public Main () {
	// Window setup
	setSize (500, 500);
	setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

	// Put a Canvas in
	canvas = new Canvas (this);
	add (canvas);

	setVisible (true);

	// Start timer
	Timer timer = new Timer (100, this); // 100 milliseconds //*2 Timer
	timer.start(); //*2
    }

    public int getFrameNumber () { return frameNumber; } //*1

    // Like a clock tick
    public void actionPerformed (ActionEvent e) { //*3
	frameNumber++; //*3
	canvas.repaint (); //*3
    }
}
[download file]