add( BorderLayout.EAST,
createControlPanel( ) );
nextGenerationButton.addActionListener( new ActionListener( ) {
public void actionPerformed(ActionEvent e)
{
Worker.post( new Job( ) {
public Object run()
{
grid.nextGeneration( );
return null;
}
} );
canvas.repaint( );
}
} );
clearButton.addActionListener( new ActionListener( ) {
public void actionPerformed(ActionEvent e)
{
Worker.post( new Job( ) {
public Object run()
{
grid.killAll( );
return null;
}
} );
canvas.repaint( );
}
} );
ActionListener timerAction = new ActionListener( ) {
public void actionPerformed(ActionEvent ae)
{
Worker.post( new Job( ) {
public Object run()
{
if ( !grid.nextGeneration( ) )
{
stopTimer( );