开发者

Replay a non-looping gif image

开发者 https://www.devze.com 2022-12-11 08:20 出处:网络
I\'ve got a non-looping gif that I use as ImageIcon for two JLabels, but not at the same time. My pr开发者_如何转开发oblem is that when I set the second JLabel\'s icon to be the gif, the animation ha

I've got a non-looping gif that I use as ImageIcon for two JLabels, but not at the same time.

My pr开发者_如何转开发oblem is that when I set the second JLabel's icon to be the gif, the animation has already been played, so it only show the last frame of it.

Do you know a way to get the animation when the gif is set to the second JLabel?


On the newly created icon try using:

icon.getImage().flush();


Ok,

discarded old answer. After some more searching around I found the way to do it.

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()

btw. if you leave the line label1.setIcon(null); out it will still repeat the animation of the icon only for label2. label1 stays at the last frame.

0

精彩评论

暂无评论...
验证码 换一张
取 消