/* */
import java.awt.Graphics;
import java.applet.Applet;
public class HelloApplet6 extends Applet{
final String HelloWorld = "Hello World";
// 何文字目までを表示するかを格納する変数
volatile int idx;
// スレッド停止用フラグ
volatile boolean stopFlag;
Thread helloThread = null;
public void init(){
idx = 0;
stopFlag = false;
}
public void paint(Graphics g){
// 行頭からidx文字目までを表示
g.drawString(HelloWorld.substring(0,idx),30,30);
}
public void start(){
// idx更新用スレッドを作成
if(helloThread == null){
helloThread = new Thread(){
public void run(){
// インナークラスなので、HelloApplet6クラスのメソッドが呼び出せる
runHelloWorld();
}
};
helloThread.start();
}
}
public void stop(){
// アプレット停止時にスレッドも停止するようにする
stopFlag = true;
helloThread = null;
}
private void runHelloWorld(){
while(!stopFlag){
try{
// 400ms停止
Thread.sleep(400);
}
catch(InterruptedException e){
}
// idxを1増加する。Hello Worldの文字数を越えた場合は0に戻す。
idx = (idx < HelloWorld.length() ? idx+1 : 0);
repaint();
}
}
}
|
|