Java Swing Concurrency显示JTextArea

Jac*_*ack 2 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");
   }
  });
 }
Run Code Online (Sandbox Code Playgroud)

所以现在,整个执行完成后,"Test"和"Test1"会显示在JTextArea上.如何首先显示"测试",然后3秒后显示"Test1"

提前谢谢你们

dog*_*ane 5

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();
Run Code Online (Sandbox Code Playgroud)