デジタル時計

1000ミリ秒ごとにThreadで再表示させて、まるで、数字が動いているかのようにみせます。run()、start()、stop()の三つのメソッドを記述しています。sleep()メソッドで、clockThreadスレッドを1000ミリ秒間、休止させています。

import java.awt.*;
import java.awt.event.*;
import java.util.Date;

class AnimationClockTestFrame extends Frame
 implements Runnable{
	private Thread clockThread=null;
	
	public AnimationClockTestFrame(){
		setSize(480, 80);
		setForeground(Color.BLUE);
		setFont(new Font("Monospaced", Font.BOLD, 24));
	}
	public void paint(Graphics g){
		Date date=new Date();
		g.drawString(date.toString(), 50, 60);
	}
	public void start(){
		if(clockThread==null){
			clockThread=new Thread(this, "Clock");
			clockThread.start();
		}
	}
	public void stop(){
		clockThread=null;
	}
	public void run(){
		while(Thread.currentThread()==clockThread){
			repaint();
			try{
				Thread.sleep(1000);
			}catch(InterruptedException e){
			}
		}
	}
}

public class watch{
	public static void main(String[] args){
		AnimationClockTestFrame frame=new AnimationClockTestFrame();
		frame.addWindowListener(
				new WindowAdapter(){
					public void windowClosing(WindowEvent e){
						System.exit(0);
					}
				});
		frame.setVisible(true);
		frame.start();
	}
}