我想立即更改按钮的图标

时间:2014-04-22 16:37:46

标签: java swing dispatcher event-dispatch-thread thread-sleep

我正在做简单的应用程序,并且有一个问题。

我想立即从代码中更改按钮的图标,但是在方法结束后它会起作用。

这是我的代码。

public void actionPerformed(ActionEvent e) {

..
*some code*
..

Buttons[Id].setIcon(images.get(Id));

Thread.currentThread().sleep(2000);


..
  *Some code*
..
 }

我点击该按钮,它会调用此ActionListener方法actionPerformed

Buttons[Id].setIcon(images.get(Id));应该更改图标,但在

之后会更改
Thread.currentThread().sleep(2000);

如何让它立即发挥作用?

一些调度员还是什么?

由于

1 个答案:

答案 0 :(得分:1)

使用javax.swing.Timer而不是尝试在方法中间睡觉。您正在阻止EDT设置图标。

Buttons[Id].setIcon(images.get(Id));
Timer timer = new Timer(2000, new ActionListener(){
    public void actionPerformed(ActionEvent e) {
        // do something
    }
});
timer.setRepeats(false);
timer.start();

How to Use Swing Timers

了解详情
相关问题