我需要执行/显示从 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/