我尝试在执行非常慢的任务之前设置JTextArea
的文本,我尝试按照此代码执行此操作,但由于某种原因,它首先完成方法convert
然后更改我的textArea
。
public void actionPerformed(ActionEvent e) {
...
textArea.setText("Converting your file...\n");
//Time-consuming task
File newFile = convert(oldFile);
...
}
答案 0 :(得分:1)
我强烈建议将耗时的任务转移到另一个线程。这样您就可以毫不拖延地更新UI线程。请查看此SwingWorker example post,其中详细解释了为什么要使用其他线程以及如何操作。
希望我帮忙!
答案 1 :(得分:-1)
您可以将任务分为两种不同的方法。如果以某种方式textArea.setText()
没有先执行,那么您可以添加actionListener
来设置JTextArea
和另一个actionListener
中的文本以执行慢速任务方法。比如
this.jButton1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
File newFile = convert(oldFile);
}
});
this.jButton1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae)
{
jTextArea1.setText("Converting your file...\n");
}
});
首先执行ActionListener
添加的最新信息。所以在慢任务方法之后添加你的状态方法。