【发布时间】:2015-03-07 00:26:24
【问题描述】:
我正在尝试执行以下操作:单击按钮,按钮消失 2 秒,文本显示 2 秒,然后在 2 秒后,可见性反转。到目前为止,我已经这样做了:
btnScan.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
txtScanning.setVisible(true);
btnScan.setVisible(false);
try {
Thread.sleep(2000); //1000 milliseconds is one second.
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
btnScan.setVisible(true);
}
});
结果是,只要我单击 btnScan,整个程序就会冻结 2 秒钟,然后再执行任何操作。如何按正确的顺序添加延迟?
【问题讨论】:
-
使用线程。不要使用
Thread#sleep。 -
Thread.sleep() 是造成它的原因,它阻塞了 Event Dispatch Thread..,Swing 是单线程的..
-
字面意思是
Thread.sleep()阻塞了调用它的线程。