2012-10-14 22 views
0

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

+2

看看[这个问题](http://stackoverflow.com/questions/2710712/output-to-jtextarea-in-realtime),这也将解决您的问题。 –

回答

2

这取决于你如何建立你的后台任务。

如果您使用的是普通的ThreadRunnable,则需要将事件触发到事件派发线程(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内执行)

看看