我正在尝试向 JTextArea
动态添加/追加文本。我尝试这样做:
for(int i=0;i<10;i++){
jtextArea.append("i="+i);
//some processing code***********
}
实际上所有i
值都在for
循环完成后附加到jtextarea。但是我想在 for
循环进行时将 i
值添加到 jtextAres。提前致谢。
最佳答案
我假设您是在事件调度线程 上执行此操作,并且您的处理代码将阻塞此线程。因此,JTextArea
无法重绘。
你需要得到你的UI线程的处理代码。通常的建议是使用 SwingWorker
,但在这种情况下,使用常规 Thread
并使用 SwingUtilities.invokeLater
可能更容易在 EDT 上安排 append
调用。
注意:我建议从 JDK1.7 开始在 EDT 上调用 append
,该方法的 javadoc 不再声明它是线程安全的(1.6 javadoc 仍然提到这一点)。但是看着 this question表明即使在 1.6 中,在 EDT 上调用它也可能更安全。
Concurrency in Swing教程是关于这个主题的好读物。
关于java - 使用 Java 将文本动态添加到 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394275/