重播非循环gif图像
我有一个非循环的gif,我用作两个JLabel的ImageIcon,但不是同时使用。
我的问题是,当我将第二个JLabel的图标设置为gif时,动画已经播放,所以它只显示它的最后一帧。
当gif设置为第二个JLabel时,你知道一种获取动画的方法吗?
在新创建的图标上尝试使用:
icon.getImage().flush();
好,
丢弃旧答案。 经过一番搜索后,我找到了办法。
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:图像#flush()
顺便说一句。 如果你留下行label1.setIcon(null);
它仍然会仅为label2重复图标的动画。 label1停留在最后一帧。