一尘不染

JButton ActionListener-仅在单击JButton后才更新GUI

java

我的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。我希望你们能理解我的观点,而无需我给出代码。但如有必要,我可以。谢谢。


阅读 260

收藏
2020-09-08

共1个答案

一尘不染

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

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

2020-09-08