我已经为我的按钮添加了图像,但是当我运行该框架时,将抛出此异常。为什么?请帮助我。

init:

deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
        at ClientGUI.IdAndPasswordFrame.initComponents(IdAndPasswordFrame.java:91)
        at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
        at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)

第 138 行:

public ImageIcon (URL location) {
    this(location, location.toExternalForm());
}

第91行:

 jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N

我使用这个糟糕的检查(Peter Lang推荐),即:System.out.println(getClass().getResource("/Images/yahoo_1.gif"));并且返回null,为什么呢?请帮我。

有帮助吗?

解决方案

这意味着 getClass().getResource("/Images/yahoo_1.gif") 回报 null.

Java文档 指出如果发生这种情况

无法找到资源或调用者没有足够的权限来获取资源。

  1. 检查是否 getResource 真的回来了 null:
    System.out.println(getClass().getResource("/Images/yahoo_1.gif"));

  2. 确保您的路径正确并且位于您的类路径中。

编辑:

我刚刚用 NetBeans 尝试过。我创建了以下结构

Source Packages
  Images
    yahoo_1.gif

并且您的代码运行良好。这是你的结构吗?

尝试右键单击您的应用程序并选择 Clean and Build.

其他提示

为了解决这一问题,该图像需要在仓要复制目录 - 而不是在的 SRC 目录

否则,你会得到空所有的时间上的的getClass()。的getResource( “image.png”)。 路径是不为空,并可以将其设置为上面 - 只有当你复制你所需要的二进制文件目录,这里为您的项目的.class文件都位于里面的图片

这解决了这一问题。让我知道如果我在这个帮助。

伊万娜

它看起来像getClass().getResource("/Images/yahoo_1.gif")回报null即.gif文件不能在你的classpath中找到。 (图像与图像也许?)

的URL被传递的时间是从该行空:

getClass().getResource("/Images/yahoo_1.gif")

从JDK文档:

  

用于读取资源[的getResource(..)返回] URL对象,   或NULL,如果资源不能   发现或者调用方没有   具有足够的权限来获取   资源

可能你的意思( “图像/ yahoo_1.gif”) - 即相对路径不是绝对

我有同样的问题。对我有用的是:

  1. 查看 jar 文件或 bin 文件夹(带有 .class 文件的文件夹)并查看图像的路径。
  2. 项目清单
private class HandlerClass implements ActionListener{
        public void actionperformed(ActionEvent event){
            JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
        }

}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top