Java:执行耗时任务之前的setText

时间:2014-03-16 07:49:53

标签: java

我尝试在执行非常慢的任务之前设置JTextArea的文本,我尝试按照此代码执行此操作,但由于某种原因,它首先完成方法convert然后更改我的textArea

的文字
public void actionPerformed(ActionEvent e) {
...
    textArea.setText("Converting your file...\n");

    //Time-consuming task
    File newFile = convert(oldFile);
...
}

2 个答案:

答案 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添加的最新信息。所以在慢任务方法之后添加你的状态方法。