【发布时间】:2012-10-14 21:02:49
【问题描述】:
我想执行一个线程,它应该在特定的时间间隔后得到一些结果。现在我想在JTextArea 中显示该结果。如何从JTextArea 的线程中创建一个事件?
【问题讨论】:
-
看看this question,这也能解决你的问题。
标签: java multithreading swing
我想执行一个线程,它应该在特定的时间间隔后得到一些结果。现在我想在JTextArea 中显示该结果。如何从JTextArea 的线程中创建一个事件?
【问题讨论】:
标签: java multithreading swing
这取决于你如何建立你的后台任务。
如果您使用的是普通的 Thread 或 Runnable,则需要在事件调度线程 (ETD) 上触发一个事件,以确保您对 UI 所做的任何更改都发生在 EDT 中。
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 内为您执行)中对工作人员的完成采取行动
看看
【讨论】: