Java应用程序中的动画GIF正在抛出MalformedURLException

时间:2014-07-22 16:08:20

标签: java animation

我想在我的应用程序中显示动画gif。我按照此处的代码进行了操作:Show animated GIF

当我运行我的代码时,我收到MalformedURLException错误,我的应用程序将无法运行。以下是我的工作原理。

调用createVisuals()的方法:

private void defaultGUI() {

    frame.setTitle("Class Map");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setLayout(new FlowLayout(FlowLayout.LEADING, 0, 0));
    frame.setBounds(0, 0, frameWidth, frameWidth/2);
    frame.getContentPane().setBackground(Color.WHITE);
    frame.setUndecorated(true);

    try {
        Visuals.createVisuals();
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }

    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setResizable(false);
    frame.setVisible(true);
}

显示gif的方法:

public class Visuals {

public static void createVisuals() throws MalformedURLException{

    URL cwURL = new URL("src\\images\\classmap_colorwheel-gif.gif");
    Icon cwGif = new ImageIcon(cwURL);
    JLabel cwIcon = new JLabel(cwGif);
    GUI.frame.getContentPane().add(cwIcon);
}

我做得不好?

编辑: laksys指出我的URL构造错误并提供了修复它的参考。问题是我没有提供完整的文件位置以及将URL添加到URL的开头。

URL cwURL = new URL("src\\images\\classmap_colorwheel-gif.gif");

URL cwURL = new URL("File:C:/Users/01526460/Desktop/ClassMap/src/images/classmap_colorwheel-gif.gif");

这导致异常消失,但gif无法正常运行。只有一帧gif序列加载而其他帧只加载一部分。 gif也比它应该更快地循环。

编辑2: 我发现gif没有正确循环,因为我的方式,而不是因为Java。我用Photoshop CS6创建了一个帧动画。当我在帧之间以0秒延迟运行帧动画时,它在Photoshop中看起来很好。但是,当通过Java解释0秒延迟时,gif实际上是在帧之间尝试0秒。如果其他人遇到此问题,请确保帧之间的延迟不设置为0. Java不会自动控制gif的帧速率(就像许多浏览器一样)。

1 个答案:

答案 0 :(得分:1)

我认为您的网址构造错误。它可能有协议,主机,端口等,please ref this