重放一个非循环 gif 图片

3
我有一个非循环gif图像,用作两个JLabel的ImageIcon,但不同时使用。
我的问题是,当我将第二个JLabel的图标设置为gif时,动画已经播放过了,所以它只显示最后一帧。
您知道一种在将gif设置为第二个JLabel时获取动画的方法吗?

你是在谈论Swing应用程序还是Web应用程序? - Josh Stodola
2
标记化Java,使用JLabel(Swing组件).. 应该很清楚。 - BalusC
2个回答

4
在新创建的图标上尝试使用:
icon.getImage().flush();

LOL已经有同样的答案准备了一段时间。但是在进行了更多测试后,现在才隐藏了保存编辑按钮。无论如何。 - jitter

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 会停留在最后一帧。


第一条:Eclipse提示:loadImage()对于imageIcon不可见。 第二条:不起作用(只显示最后一帧)。 - POSIX_ME_HARDER

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接