【问题标题】:Issue with gif animation in Java swingJava swing 中的 gif 动画问题
【发布时间】:2016-04-05 16:50:54
【问题描述】:

当我尝试加载 gif 动画时,我只是得到一个空帧。你知道出了什么问题吗?该文件位于 extras/loading.gif 中:

package an1;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class An1 {

 public static void main(String[] args){

    JFrame frame = new JFrame("Test");

    ImageIcon loading = new ImageIcon("extras/loading.gif");
    frame.add(new JLabel(loading, JLabel.CENTER));

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);


}
}

我在默认设置下使用此网站http://spiffygif.com 获得了 loading.gif。我只是将名称从 gif.gif 更改为 loading.gif。这里是:

【问题讨论】:

  • 你愿意分享loading.gif 吗?
  • 您的代码是否使用保存在同一位置的常规 jpg 图像?
  • 我已修改问题以包含 gif。非常感谢您的帮助。
  • 您的代码正在运行。我认为问题出在应用程序的其他部分。请分享更多代码。
  • 这是否与您将班级放在一个包中这一事实有关?我想知道你是否在默认包中尝试它(只是不要把它放在一个包中)是否可行。我不经常使用包,所以不确定这是否会影响你,但它对我来说运行良好,而不是在包中。

标签: java swing embedded-resource animated-gif


【解决方案1】:

我正在运行 Ubuntu (Linux),因此您的代码对我来说运行良好,这让我相信这可能是文件名的文件分隔符问题。你在运行 Windows 吗?如果是这样,试试这个:

ImageIcon loading = new ImageIcon("extras\\loading.gif");

Windows 上的文件分隔符是“\”,而 MAC/Linux 上的文件分隔符是“/”。由于“\”在 Java 中是一个转义字符,因此您需要使用其中的两个才能使其真正起作用。

【讨论】:

  • 分隔符无关紧要。 Java/Windows 将处理它。使用“/”更容易,因此您不必担心转义“\”。
  • 我使用的是 Mac。尝试了 /、//、\ 和 \\ 但仍然无法正常工作。还有其他想法吗?
【解决方案2】:

在你的机器上运行这个源代码并检查它是否有效..

import java.net.*;
import javax.swing.*;

public class An1 {

    public static void main(String[] args) throws MalformedURLException {
        JFrame frame = new JFrame("Test");

        ImageIcon loading = new ImageIcon(
                new URL("http://i.stack.imgur.com/8IXqb.gif"));
        frame.add(new JLabel(loading, JLabel.CENTER));

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 300);
        frame.setVisible(true);
    }
}

注意应用程序资源在部署时将成为嵌入式资源,因此明智的做法是立即开始访问它们。 必须通过 URL 而不是文件访问。请参阅info. page for embedded resource 了解如何形成 URL。

【讨论】:

  • 请对此作出回应。这不是答案,需要删除。
猜你喜欢
  • 1970-01-01
  • 2014-04-20
  • 2015-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2013-03-22
  • 2020-03-04
相关资源
最近更新 更多