【发布时间】:2019-07-18 18:59:17
【问题描述】:
我正在使用 JLabel 创建动画,
public void updateLabels() {
label.setIcon(new ImageIcon(new Paint().getScaledImage(paint[currentIndexLabel].imageCALA,300,300)));
label_1.setIcon(new ImageIcon(new Paint().getScaledImage(paint[currentIndexLabel].imageStates,300,300)));
label_2.setIcon(new ImageIcon(new Paint().getScaledImage(paint[currentIndexLabel].imageStrategies,300,300)));
label_3.setIcon(new ImageIcon(new Paint().getScaledImage(paint[currentIndexLabel].imagekD,300,300)));
currentIndexLabel++;
}
我有一个更新标签的按钮
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
while (currentIndexLabel != paint.length-1) {
updateLabels();
}
}
});
但是,我不知道如何等待,例如 1000 毫秒,直到下一次更改。当我添加这个时:
try { Thread.sleep(1000); } catch (Exception e){}
进入我的 ActionListener:
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
while (currentIndexLabel!=paint.length-1) {
updateLabels();
try { Thread.sleep(1000); } catch (Exception e){}
}
}
});
它不工作。它只是停了一会儿,我看不到第一帧和最后一帧之间的变化。是否可以在不停止程序的情况下等待 1000 毫秒?当我删除 while 循环和尝试部分,然后单击我的按钮时,它的变化非常好......
我该怎么做?
【问题讨论】:
-
尝试调查这个 - stackoverflow.com/questions/149153/…。似乎比使用四个标签更合理地加载直接动画 gif