我正在尝试将文本添加/附加到JTextArea
动态。我试着做:
for(int i=0;i<10;i++){
jtextArea.append("i="+i);
//some processing code***********
}
实际上,循环i
完成后所有值都附加到 jtextarea for
。但是随着循环的进行,我想为i
jtextAres 添加价值。for
提前致谢。
我假设您在Event Dispatch Thread上执行此操作,并且您的处理代码将阻塞该线程。结果,JTextArea
无法重新粉刷。
您需要获取 UI 线程的处理代码。通常的建议是使用 a ,但在这种情况下,使用常规和使用来安排EDT 上的呼叫SwingWorker
可能更容易。Thread
SwingUtilities.invokeLater
append
注意:我建议append
从 JDK1.7 开始调用 EDT,该方法的 javadoc 不再声明它是线程安全的(1.6 javadoc 仍然提到这一点)。但是看这个问题表明,即使在 1.6 中,在 EDT 上调用它也可能更安全。
Swing中的并发教程是关于这个主题的好读物。
我不确定我是否理解你的问题,但试试这个代码:
for(int i = 0; i < 10; i++)
{
final int x = i;
SwingUtilities.invokeAndWait(new Runnable()
{
@Override
public void run()
{
jtextArea.append("i=" + x);
}
});
//some processing code***********
}