classes/EndlessMessage.java



import browser.Applet;
import awt.Graphics;
import awt.Color;

/**
EndlessMessage クラス
 */
class EndlessMessage extends Applet implements Runnable {

       Thread slideThread=null;         // 画像の移動を行うスレッド
       protected int x=0;               // メッセージのアプレット内の位置
       protected String message=null;   // メッセージの内容
       protected int messageWidth;      // メッセージの横幅

    /**
     初期設定の関数。
     指定された URL のイメージを生成し、アプレットのサイズを設定。
     */
       protected void init() {

             message = getAttribute( "value" );
             if( message == null )
                  message = "ようこそ稚内北星学園短期大学へ";
             messageWidth = font.stringWidth( message ) * 4 / 3;

             resize( messageWidth/2, 36 );
       }

    /**
     アプレットの表示(初期状態)を行う関数。
     */
       public void paint( Graphics g ) {

             g.setForeground( Color.black );
             g.paint3DRect( 0, 0, messageWidth/2, 36, true, false );
       }

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

             g.setForeground( Color.black );
             g.paint3DRect( 0, 0, messageWidth/2, 36, true, false );
             g.setForeground( Color.yellow );
             g.drawString( message, x, 24 );
             g.drawString( message, x + messageWidth, 24 );
       }

    /**
     アプレットが続行する作業
     */
       public void run() {

             while( slideThread.isAlive() ) {
                  repaint();
                  x-=6;
                  if( x + messageWidth < 0 ) x=0;
                  Thread.sleep(200);            //一時停止200ミリ秒
             }
       }

    /**
     アプレットが画面に現れた時に呼び出される。
     */
       protected void start() {

             if( slideThread == null ) {
                   slideThread = new Thread(this);
                   slideThread.start();          //スレッド起動
             }
       }

    /**
     アプレットが画面から消えた時に呼び出される。
     */
       protected void stop() {

             if( slideThread != null ) {
                   slideThread = null;           //スレッド停止
             }
       }
}