Java相談室 Part3

このエントリーをはてなブックマークに追加
668ナナシ
sleepの件はどうもありがとうございました。
repaint()についてなのですが、ドキュメントだと
「このコンポーネントを再描画します。
このメソッドは、このコンポーネントの update メソッドを可能な限り速やかに呼び出します。」
としか書いてないので悩んでいます。
以下のクラス(数字が増えていくアプレット)を実行すると、スレッドでup()を呼び出しているときは、
再描画してくれるのですが、止めたあと(止めてから5数字があがる)は、
カウントアップされずにいきなり5あがった数字が出てきます。
repaint()が効いていないということですよね??
原因がわかる方教えてください。
よろしくお願いします。
669ナナシ:2001/07/30(月) 21:08
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class test extends Applet implements Runnable,ActionListener{
Thread MyThread;
int count;
Graphics offGraphics;
Label lb;

public void init(){
String c = new String();
count = 0;
Panel p = new Panel();
Button b = new Button("OK");
b.addActionListener(this);
p.add(b);
setLayout(new BorderLayout());
add("South",p);
lb = new Label("0");
lb.setAlignment(Label.RIGHT);
add("North",lb);
}

public void paint(Graphics g){
String c = new String();
lb.setText(c.valueOf(count));
}

public void run(){
Thread thisThread = Thread.currentThread();
while(MyThread == thisThread){
up();
try{
MyThread.sleep(1000);
}catch(InterruptedException e){
break;
}

}
}