>>27
そういうことでTimerを使うのはなんだかなあという気がする。
スレッドを明示的に使ってないのである意味単純かもしれないが。
sleepはThreadクラスのクラスメソッドのsleepを使えば自分自身のスレッドを眠らせられる。
例えばこんな感じ。
import java.awt.event.*;
import javax.swing.*;
public class A extends JApplet implements ActionListener {
private JTextField t = new JTextField(20);
private JButton b = new JButton("start");
public void init() {
getContentPane().setLayout(new java.awt.FlowLayout());
getContentPane().add(t);
b.addActionListener(this);
getContentPane().add(b);
}
public void actionPerformed(ActionEvent e) {
new Thread(new Runnable() {
public void run() {
b.setEnabled(false);
// ここで、ある計算
t.setText("ある計算の結果");
try { Thread.sleep(5000); } catch (InterruptedException ee) { System.err.println(ee); }//ここで5秒眠る
// ここで、別の計算
t.setText("別の計算の結果");
b.setEnabled(true);
}
}).start();
}
}
ボタンを押した時の処理で新しくスレッドを立ち上げてるのはそうしないとGUIが固まるからだ。