不能在显示图标之间延迟



当actionPerformed方法被调用时,我希望它在第一个按钮上显示所需的图标,延迟1秒,然后在第二个按钮上显示图标。图标总是同时显示吗?

@Override public void actionPerformed(ActionEvent e)
{
btnTest1.setIcon(img2);
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
btnTest2.setIcon(img2);
}

我假设这是JavaFX/Java Swing。我对它不太熟悉,但我相信线程不能工作是因为在swing应用程序中使用线程有并发规则。我有类似的问题,写了一个关于如何使用线程延迟的问题。我找到了使用timer对象的源代码。通过以下方式实现计时器可能会更好:

import javax.swing.Timer;

我相信其他更高级的用户可能会提供更多的细节。这可能是另一种选择。甲骨文也可能有所帮助:https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html

按钮的图标设置为setIcon,但这并不意味着它们立即被绘制。这两个图标将只画后,你从你的actionPerformed方法返回。您需要做的是设置第一个按钮的图标,然后使用Timer(参见zOrigin_的答案),并在计时器结束后,设置第二个按钮的图标。

最新更新