线程结果显示在文本区域中

时间:2012-10-14 21:02:49

标签: java multithreading swing

我想执行一个线程,它应该在特定的时间间隔后得到一些结果。现在我想在JTextArea中显示结果。如何从线程为JTextArea创建一个事件?

1 个答案:

答案 0 :(得分:2)

这取决于你如何确定你的后台任务。

如果您使用普通ThreadRunnable,则需要在事件调度线程(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中为您执行)对工作人员的完成采取行动

看看