我想执行一个线程,它应该在特定的时间间隔后得到一些结果。现在我想在JTextArea
中显示结果。如何从线程为JTextArea
创建一个事件?
答案 0 :(得分:2)
这取决于你如何确定你的后台任务。
如果您使用普通Thread
或Runnable
,则需要在事件调度线程(ETD)上触发事件,以确保您对UI所做的任何更改都在美国东部时间。
Swing提供了一种简单的机制,允许您将Runnable
排入事件队列,其run
方法将在EDT中执行。
// Inside you thread...
// Some block action...
SwingUtilities.invokeLater(new Runnable() {
public void run() {
// Executing within the EDT...
}
});
看看
更简单的解决方案可能是使用SwingWorker
而不是普通Thread
。这将允许您使用done
方法(在EDT中为您执行)对工作人员的完成采取行动
看看