我有一个gui,我想显示一些文字,然后等一下。
我的代码看起来像这样:
//do something (add JTextArea, revalidate, repaint)
try{
Thread.sleep(4000);
}
catch(InterruptedException e){
}
"某事"应该执行,然后代码应该等待。但是,我看到"某事"只有在等待时间结束后才会发生。我怎样才能达到预期的行为?
答案 0 :(得分:3)
是的,正如我想的那样,你在Swing事件线程中调用了sleep。
解决方案:不要。在事件线程上调用Thread.sleep(...)
将阻止它执行必要的操作,包括绘制GUI(这就是为什么您没有看到预期的睡前更改)。
使用Swing Timer或后台线程。解决方案的细节取决于您的问题。
在您的编辑中,您声明:
我有一个gui,我想显示一些文字,然后等一下。
然后使用Swing Timer。您可以在此处找到该教程:How to use Swing Timers。简而言之,您将时间延迟和ActionListener传递给Timer的构造函数,您将要将其设置为不重复,然后在其上调用start。延迟发生后,将调用ActionListener的代码。