java设置延迟以更改imageicon
我试图设置一个延迟,当按下一个按钮,将一个图像图标设置为某个图像,然后设置另一个延迟,以便设置另一个图像,所有这些都是通过单击来实现的。 换句话说: 单击一个按钮->设置图像->延迟->设置另一个图像 我在代码中得到的是最后一个状态“设置另一个图像” 另外,我不想使用计时器,我想使用延迟 这里是我的代码中我关心的部分java设置延迟以更改imageicon,java,swing,delay,mouselistener,thread-sleep,Java,Swing,Delay,Mouselistener,Thread Sleep,我试图设置一个延迟,当按下一个按钮,将一个图像图标设置为某个图像,然后设置另一个延迟,以便设置另一个图像,所有这些都是通过单击来实现的。 换句话说: 单击一个按钮->设置图像->延迟->设置另一个图像 我在代码中得到的是最后一个状态“设置另一个图像” 另外,我不想使用计时器,我想使用延迟 这里是我的代码中我关心的部分 btnNewButton.addMouseListener(new MouseAdapter() { @Override public void mouseClic
btnNewButton.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
lblNewLabel.setIcon(and);
sleeep(500);
lblNewLabel.setIcon(app);
}
});
这是延迟函数
void sleeep(int n)
{
try {
Thread.sleep(n);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
}
您应该尝试使用InvokeLater执行在事件分派线程中设置映像的代码
SwingUtilities.invokeLater(new Runnable() {
public void run() {
lblNewLabel.setIcon(and);
}
});
sleeep();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
lblNewLabel.setIcon(and);
}
});
mouseClicked()
添加,顺便说一句,所有Mouse
和Key
事件都在中正确执行Thread.sleep(n)代码>您遇到问题,请改用
重复:@tokhi我没有提到我不想使用计时器。它不会可靠工作,只要你不在另一个线程上执行
睡眠
,然后安排invokeLater
设置最后一个图标。添加action listener会得到相同的结果,加上我提到我不想使用计时器。然后结果永远不会稳定。我打算在图像更改时冻结整个程序,这就是为什么我不想使用计时器的原因……我知道我可以在计时器工作时将对象设置为不可拾取,但使用延迟会容易得多。