5

我的 JButton ActionListener 有问题。我在另一个类中定义了一个 doTheCleaning() 方法,该方法在调用时会对我的 GUI 进行一系列更改。

public void doTheCleaning(){
    //change image icon
    //had thread.sleep here
    //insert to text area
    //had thread.sleep here
    //etc
}

然后在另一个类中,我实例化了包含我的 doTheCleaning() 方法的类,并用我的 actionperformed() 方法为我的 jbutton 编写了 ActionListener,如下所示:

public void actionPerformed(ActionEvent e){
   //some code
   //newClass.doTheCleaning();
}

我知道如何做其余的事情,比如 addActionListener() 和其他东西,所以不需要对此提出质疑。我担心的是,调用 doTheCleaning() 方法时在我的 GUI 中执行的所有更改仅在单击按钮后才适用。发生这种情况时,我的标签和文本区域中发生的更改之间的连续性没有显示出来。如果我直接在我的测试程序类中调用它,代码工作正常,但在 actionperformed 方法中调用它只显示我的 GUI 的最终状态。我需要显示哪个元素首先更改,然后是下一步,等等。

当我需要这些更改仅在单击 JButton 时发生时,我怎么能实现它?

**我还不太擅长在 java 中做 GUI。我希望你们在没有我提供代码的情况下理解我的观点。但如果有必要我可以。谢谢。

4

1 回答 1

12

不要在EDT中执行任何密集操作,否则 GUI 将无响应并且您可能看不到 GUI 更新。您可以使用的最佳选择是SwingWorker

有关这方面的更多信息,请阅读Swing 中的并发

于 2012-07-18T16:37:28.877 回答