Воспроизвести изображение без зацикливания GIF - PullRequest
3 голосов
/ 12 ноября 2009

У меня есть не зацикленный gif, который я использую как ImageIcon для двух JLabels, но не одновременно.

Моя проблема в том, что когда я установил второй значок JLabel в качестве картинки, анимация уже была воспроизведена, поэтому она показывает только последний кадр.

Вы знаете способ получить анимацию, когда gif установлен на второй JLabel?

Ответы [ 2 ]

4 голосов
/ 12 ноября 2009

На вновь созданном значке попробуйте использовать:

icon.getImage().flush();
1 голос
/ 12 ноября 2009

Хорошо,

отверг старый ответ. После еще нескольких поисков я нашел способ сделать это.

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 остается в последнем кадре.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...