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

public class BlinkDemo extends JFrame implements Runnable {
    public static void main(String[] args) {
	BlinkDemo demo = new BlinkDemo();
	demo.setTitle("Blink Demo");
	demo.setSize(500,400);
	demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	demo.setVisible(true);

	Thread t = new Thread(demo, "BlinkDemo");
	t.start();
    }
    
    public BlinkDemo() {
	canvas = new BlinkCanvas(); 
	getContentPane().add(canvas);

    }

    public void run() {
	while(true) {
	    canvas.repaint();
	    try {
		Thread.sleep(1000);
	    }
	    catch(InterruptedException e) {}
	}
    }

    private BlinkCanvas canvas;
}

class BlinkCanvas extends JPanel {
    public void paintComponent(Graphics g) {
	super.paintComponent(g);
	Graphics2D g2 = (Graphics2D) g;
	Random r = new Random();
	int n = r.nextInt(3);

	Color c = Color.BLACK;
	switch(n){
	case 0:
	    c = Color.red;
	    break;
	case 1:
	    c = Color.blue; 
	    break;
	case 2: 
	    c = Color.green;
	    break;
	case 3:
	    c = Color.black;
	}
	g2.setPaint(c);
	Rectangle2D rect = new Rectangle2D.Float(100,100,300,100);
	g2.fill(rect);
    }
}
