尝试显示一个gif文件时java.lang.NullPointerException?

use*_*488 -1 java swing nullpointerexception

好吧,基本上我尝试使用url显示.gif,但它给了我一个空指针异常,我不知道为什么,因为我的url是正确的,我的代码没有其他问题(至少没有我能看到) .

   import javax.swing.*;
   import java.net.*;
public class image {

public image() {

}

public static void main(String[] args) {


    URL url = image.class.getResource("<http://cdn.osxdaily.com/wp-content/uploads/2013/07/dancing-banana.gif>");
    ImageIcon imageIcon = new ImageIcon(url);
    JLabel label = new JLabel(imageIcon);
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    panel.add(label);
    frame.add(panel);
    frame.setTitle("Title");  
    frame.setSize(700,500);
    frame.setResizable(false);
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);


         }

    }
Run Code Online (Sandbox Code Playgroud)

Mad*_*mer 5

URL url = image.class.getResource("<http://cdn.osxdaily.com/wp-content/uploads/2013/07/dancing-banana.gif>");
Run Code Online (Sandbox Code Playgroud)

不是您如何从Web资源引用图像.您将使用此方法加载嵌入在应用程序中的资源(在应用程序类路径的上下文中)

URL url = new URL("http://cdn.osxdaily.com/wp-content/uploads/2013/07/dancing-banana.gif");
Run Code Online (Sandbox Code Playgroud)

可能会更好......

请记住,下载和加载图像可能需要一些时间,您可能希望使用a MediaTracker来跟踪进度,这将允许您向用户提供反馈,并知道何时在图像可用时更新屏幕,例如.

在有人要求之前,我选择不使用ImageIO加载动画gif,因为这只是更多的工作(如此处所示 - 不适合胆小的人).在这种情况下,MediaTracker可以用来检查错误

  • @DimaMaligin不,这实际上是这个类的问题之一(以及为什么我更喜欢`ImageIO`),但话说回来,当我们使用14.4k和28.8k调制解调器时,这个类的设计方式又回来了!哦,快乐.因此,它们旨在将图像的物理加载卸载到后台,并允许代码继续运行.这就是为什么我们有像"MediaTracker"和"ImageObserver"这样的东西,它们提供有关图像加载时的进度信息.我不是以这种方式迷恋`ImageIcon`,因为它可以无声地失败,因此需要'MediaTracker` (2认同)