Java 我想立即更改按钮的图标
我正在做一个简单的应用程序,有一个问题 我想从代码中立即更改按钮的图标,但它在方法结束后工作 这是我的密码Java 我想立即更改按钮的图标,java,swing,dispatcher,event-dispatch-thread,thread-sleep,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方法acti
public void actionPerformed(ActionEvent e) {
..
*some code*
..
Buttons[Id].setIcon(images.get(Id));
Thread.currentThread().sleep(2000);
..
*Some code*
..
}
我点击按钮,它调用这个ActionListener
方法actionPerformed
按钮[Id].setIcon(images.get(Id))代码>应更改图标,但在
Thread.currentThread().sleep(2000);
我怎样才能使它立即起作用
是调度员还是什么
谢谢< p>使用<代码> javax .wing。您正在阻止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();
请参阅上的详细信息,您为什么需要睡眠部分?可能需要在睡眠之前重新绘制()?不要阻止EDT(事件调度线程)-发生这种情况时,GUI将“冻结”。不要调用Thread.sleep(n)
为重复任务执行Swing计时器,或为长时间运行的任务执行SwingWorker
。有关更多详细信息,请参阅。