java - 使用 Java 将文本动态添加到 JTextArea

标签 java swing

我正在尝试向 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/

相关文章:

Java Swing GUI 在重新聚焦时卡住

java - java中跨进程锁的实现

java - Hybris 服务器的 TLS 1.2 配置

java - 使用不同的java更新版本|这对申请有何影响?

java - JLabel 无法与 ButtonHandler 一起使用

Java Swing - 修改 GridBagConstraints

java - 缓冲图像放大到超过 8k 像素时占用 CPU

java - 使用 Apache 异步 http 客户端进行 Http POST + 身份验证

Java 使用 JDialog block 主程序

java - 为 JTable 添加标题