import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;
public class Main 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
JFrame frame = new JFrame();
frame.setSize (500, 500);
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
// Put a Canvas in
canvas = new Canvas (this);
frame.add (canvas);
frame.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
}
}