次の例は「デジタル時計」の機能を実現したアプレットです。
ポイントとなるのは、start(), stop(), run() の各メソッドです。
以上のようなパターンは、多くのアプレットでも共通して利用される 基本のパターンです。
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.util.Date;
/** 時計のアプレット Clock クラスの定義 */
public class Clock extends Applet implements Runnable {
/** 時刻の更新を行うスレッド */
public Thread clockThread=null;
/** 初期設定のメソッド
指定された色のイメージを生成し、アプレットのサイズを設定 */
public void init() {
resize( 208, 36 );
}
/** アプレットの表示(初期状態)を行うメソッド */
public void paint( Graphics g ) {
g.setColor( Color.black );
g.fillRect( 0, 0, size().width, size().height );
}
/** アプレットの表示の変更を行うメソッド */
public void update( Graphics g ) {
paint( g );
Date date = new Date(); //現在の時刻
g.setColor( Color.yellow );
g.drawString( date.toString(), 4, 24 );
}
/** アプレットが画面に現れた時に呼び出される */
public void start() {
if( clockThread == null ) {
clockThread = new Thread(this); //スレッド生成
clockThread.start(); //スレッド起動
}
}
/** アプレットが画面から消えた時に呼び出される */
public void stop() {
if( clockThread != null ) {
clockThread.stop(); //スレッド停止
clockThread = null; //スレッド消去
}
}
/** アプレットが続行する作業 */
public void run() {
while( clockThread.isAlive() ) {
repaint();
try {
Thread.sleep(200); //一時停止
}
catch (InterruptedException e){ /* 形式上必要 */ }
}
}
}