【发布时间】:2012-07-17 17:16:17
【问题描述】:
我的 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。我希望你们在没有我提供代码的情况下理解我的观点。但如果有必要我可以。谢谢。
【问题讨论】:
-
您的意思是您对标签和文本区域进行了多次更改,并且您希望它们在用户看到每一步的情况下一一发生?
-
为了方便阅读,请遵守拼写规则(句子中的第一个字母应大写:-)
-
不要在 GUI 代码中使用
Thread.sleep(...)之类的调用。而是为此目的使用javax.swing.TImer,可能是您没有在 EDT 上更新您的东西 - 事件调度线程,这可能会对您有所帮助:-)
标签: java swing user-interface jbutton swingworker