Java Swing并发显示JTextArea

标签 java swing

我需要执行/显示从 Arraylist 到 JTextArea 的一系列事件,但是,每个事件的执行时间不同。以下是我的目标的一个简单示例:

public void start(ActionEvent e)
 {
  SwingUtilities.invokeLater(new Runnable()
  {
   public void run()

   {
    jTextArea.append("Test" + "\n");
    try
    {
     Thread.sleep(3000);
    } catch (InterruptedException e1)
    {
     e1.printStackTrace();
    }
    jTextArea.append("Test1" + "\n");
   }
  });
 }

现在,“Test”和“Test1”在整个执行完成后显示在 JTextArea 上。 如何让“Test”先显示,3 秒后显示“Test1”

先谢谢大家

最佳答案

invokeLater 安排 runnable 在 Event Dispatch Thread 上运行。你不应该睡在里面,否则你会饿死调度线程。尝试使用单独的工作线程:

Thread worker = new Thread(new Runnable(){
    public void run(){
        jTextArea.append("Test" + "\n");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        }
        jTextArea.append("Test1" + "\n");

    }
});
worker.start();

关于Java Swing并发显示JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4453206/

相关文章:

java - 如何获取鼠标移动之间的时间?

java - mac的应用程序内存问题

c# - 用于 Android 或 Java 和 WCF 的单声道

java - 如何在 android 中发布参数并将数据作为 JSONObject 返回?

java - 从 Swing 文本框中获取列表

java - 如何让 IntelliJ 的 GUI 构建器设置组件名称

Java Swing : Select specefic row of Jtable after filtering data

java - 如果缺少 javax.xml.XPath,如何导入?

java - 我正在尝试检查电子邮件是否具有三个字母的扩展名,例如 ".com"或 ".net",但这不起作用

java - 使用 eclipse 在 Java 中编写 GUI 应用程序