classes/MessageBoard.java
import SimpleBoard;
import awt.Graphics;
import awt.Color;
/**
看板にメッセージを表示する MessageBoard クラス
*/
class MessageBoard extends SimpleBoard implements Runnable {
Thread slideThread=null; // 画像の移動を行うスレッド
protected int x=0; // メッセージのアプレット内の位置
protected String message=null; // メッセージの内容
protected int messageWidth; // メッセージの横幅
protected int left, top; // メッセージの左端と上端の位置
/**
初期設定の関数。アプレットのサイズを設定。
*/
protected void init() {
super.init(); // 親のクラスで定義された処理
message = getAttribute( "value" );
if( message == null )
message = "ようこそ稚内北星学園短期大学へ";
messageWidth = font.stringWidth( message ) * 4 / 3;
left = ( width - messageWidth/2 )/2;
top = height/2;
resize( width, height );
}
/**
アプレットの表示(初期状態)を行う関数。
*/
public void paint( Graphics g ) {
super.paint( g ); // 親のクラスで定義された処理
g.setForeground( Color.black );
g.paint3DRect( left, top-18, messageWidth/2, 36, true, false );
}
/**
アプレットの表示の変更を行う関数。
*/
public void update( Graphics g ) {
g.setForeground( Color.black );
g.paint3DRect( left, top-18, messageWidth/2, 36, true, false );
g.setForeground( Color.yellow );
g.clipRect( left, top-18, messageWidth/2, 36 );
g.drawString( message, left + x, top+10 );
g.drawString( message, left + x + messageWidth, top+10 );
}
/**
アプレットが続行する作業
*/
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; //スレッド停止
}
}
}