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.fill3DRect( 0, 0,
                   size().width-2, size().height-2, false );
       }

    /**
     アプレットの表示の変更を行う関数。
     */
       public void update( Graphics g ) {

             Date date = new Date();       //現在の時刻

             g.setColor( Color.black );
             g.fill3DRect( 0, 0,
                   size().width-2, size().height-2, false );
             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){/* 形式上必要 */}
             }
       }
}

