for (do something in) {
TextArea.append("Text here");
//break for one second
}
我的问题是我怎么能在一秒内打破它并直接在textarea上显示而不是同时显示所有内容?
答案 0 :(得分:0)
暂停执行一秒钟可以用
完成Thread.sleep(1000);
但你应该抓住可能的InterruptedException
try
{
Thread.sleep(1000);
}
catch(InterruptedException e)
{
System.out.println(e.getMessage());
}
您还应该通过
更改GUI组件 EventQueue.invokeLater(new Runnable(){
public void run()
{
//make gui change here
}
});
从AWT GUI事件调度线程(EDT)更新它。
答案 1 :(得分:0)
对于break只需一秒钟,你必须使用Thread类的sleep(1000)方法,并且为了实现多线程,你必须覆盖run方法并扩展Thread类
答案 2 :(得分:0)
如果你的TextArea.append调用没有在swing线程中发生,它可能会一次显示。下面的块请求swing线程执行runnable中阻止当前线程的代码,直到它完成。然后我们进行1秒钟的睡眠
final JTextArea someArea = new JTextArea();
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
someArea.append("Some text");
}
});
} catch (InterruptedException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
} catch (InvocationTargetException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}
try {
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
}