我如何使用swingworker类将文本附加到textarea?

时间:2012-08-16 07:18:37

标签: java multithreading jtextarea swingworker

我想在循环中使用swingworkerclass在java中追加文本。例如:

while(true)
{
     mytextarea.append("sometext");
     if(some_condition)
     {break;}
}

我想和swingworker一起工作,因为我想看看textarea上的每一个uptade。 对于这段代码,我只看到我的过程完成时的更新。

我不想在另一种情况下使用swingworker样品。 请在这里给我一些代码。谢谢。

1 个答案:

答案 0 :(得分:0)

SwingWorker不在这里。您的代码未在EDT中运行,因此您看不到更新。您可以使用SwingUtilities.invokeLater(...)在EDT中执行代码。但是不要在EDT中执行整个while循环,因为这会阻止它并且没有更新/事件(重绘,鼠标点击)。这是一个简单的代码示例:

    while(true) {
        SwingUtilities.invokeLater(new Runnable{
            public void run() {
                textfield.setText(....);
            }
         });
         if(condition) break;
     }

有关详细信息,请查看http://java.sun.com/products/jfc/tsc/articles/threads/threads1.html或本书:http://filthyrichclients.org