JtextArea更新问题未实时更新

时间:2017-12-03 07:15:42

标签: java

我正在编写一个应用程序,在鼠标单击时会运行几个更新JtextArea的方法。问题是即使我正在使用每个方法调用更新文本区域,它实际上不会更新,直到鼠标单击中的所有内容都运行..

这可能需要很长时间才能完成所有操作,我希望每次调用都能看到文本区域更新,而不是等到一切都完成后

public void mouseClicked(MouseEvent e) {
                DataCollector dc = new DataCollector();

                dataCollected.append("Begining Test...\n\n");
                dataCollected.append("Collecting System Information... \n\n");
                dataCollected.append(dc.getSystem());
                                ... lots more like this...

}

1 个答案:

答案 0 :(得分:0)

  

在鼠标点击中的所有内容都运行之前,它实际上并没有更新。

这完全正确。在GUI线程上调用mouseClicked方法,该线程是唯一更新GUI的线程。所以你的"更新textarea内容"在mouseClicked方法完成之后执行操作。因此,在GUI线程上运行的方法应该运行得非常快,因此其他想要在GUI线程上运行的方法可以这样做。

您可以启动一个与正常代码并行运行的新线程,该代码将更新您的JTextArea。阅读Lesson: Concurrency in Swing关于如何使用swing中的线程(以及" Event Dispatch Thread"是什么)。