Java swing中的gif动画问题

Java swing中的gif动画问题,java,swing,embedded-resource,animated-gif,Java,Swing,Embedded Resource,Animated Gif,当我尝试加载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(

当我尝试加载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);


}
}
我使用此网站的默认设置加载了.gif。我刚把名字从gif.gif改为loading.gif。这是:

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

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

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

在您的计算机上运行此源代码并检查它是否起作用

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而不是文件访问。有关如何形成URL的信息,请参见。

是否共享
加载.gif
?您的代码是否与保存在同一位置的常规jpg图像一起工作?我已修改此问题以包含gif。非常感谢您的帮助。您的代码正在运行。我想问题出在你申请的其他部分。请分享更多代码。这是否与您将类放在包中有关?我想知道你是否可以在默认的包中尝试(只是根本不要把它放在包中)这样做是否有效。我不经常使用软件包,所以不确定这是否会影响您,但它在没有软件包的情况下运行良好。分隔符并不重要。Java/Windows将处理它。使用“/”更容易,所以你不必担心逃离“\”。我使用的是mac电脑。已尝试/、/、\和\\,但仍不起作用。还有其他想法吗?请回复。它不是“答案”,需要删除。