在JLabel中显示来自URL的动画.gif文件

Meg*_*iac 4 java swing image jlabel gif

有没有办法在JLabelJPEG或PNG图像中显示动画GIF 图像?我想从URL加载动画GIF以在标签中显示它.

如果我尝试使用常见的静态图像方法,我只需要收到GIF的第一帧...

url = new URL("http://example.gif");
image = ImageIO.read(url);

ImageIcon icon = new ImageIcon(image); 

picture = new JLabel();
picture.setIcon(icon);
Run Code Online (Sandbox Code Playgroud)

And*_*son 5

而是使用:

ImageIcon icon = new ImageIcon(url);  
Run Code Online (Sandbox Code Playgroud)

另请参阅在Swing中显示动画BG,了解更改的原因.

简而言之,使用动画GIF加载ImageIO将创建一个静态GIF(由动画的第一帧组成).但是如果我们传递URLImageIcon它,它将正确加载动画的所有帧然后运行它们.


所以改变这个:

url = new URL("http://example.gif");
image = ImageIO.read(url);

ImageIcon icon = new ImageIcon(image); 

picture = new JLabel();
picture.setIcon(icon);
Run Code Online (Sandbox Code Playgroud)

对此:

url = new URL("http://example.gif");

ImageIcon icon = new ImageIcon(url); // load image direct from URL

picture = new JLabel(icon); // pass icon to constructor
Run Code Online (Sandbox Code Playgroud)

甚至这个:

url = new URL("http://example.gif");
picture = new JLabel(new ImageIcon(url)); // don't need a reference to the icon
Run Code Online (Sandbox Code Playgroud)