重播非循环gif图像

时间:2009-11-11 22:06:33

标签: java swing animation

我有一个非循环的gif,我用它作为两个JLabel的ImageIcon,但不能同时使用。

我的问题是,当我将第二个JLabel的图标设置为gif时,动画已经播放,所以它只显示它的最后一帧。

当gif设置为第二个JLabel时,你知道一种获取动画的方法吗?

2 个答案:

答案 0 :(得分:4)

在新创建的图标上尝试使用:

icon.getImage().flush();

答案 1 :(得分:1)

确定,

丢弃旧答案。经过一番搜索后,我找到了办法。

ImageIcon icon = ..[the animated gif without looping]..
....
label1.setIcon(icon); //animation plays once
....
// now time to remove icon from label1 and add it to label2
label1.setIcon(null);
icon.getImage().flush(); //reset resource used by the image
label2.setIcon(icon);
....

Java Api: Image#flush()

顺便说一句。如果你离开label1.setIcon(null);行,它仍然会仅为label2重复图标的动画。 label1停留在最后一帧。