Java组合框+;图像图标

Java组合框+;图像图标,java,eclipse,Java,Eclipse,我正在尝试构建一个真正的基本程序,根据从下拉框中选择的项目,该程序将在两张图片之间切换。这是我正在尝试运行的代码,但我不断收到一个错误消息: Exception in thread "main" java.lang.NullPointerException at javax.swing.ImageIcon.<init>(ImageIcon.java:181) at Gui.<init>(Gui.java:10) at Apples.main(Apples.java:7)

我正在尝试构建一个真正的基本程序,根据从下拉框中选择的项目,该程序将在两张图片之间切换。这是我正在尝试运行的代码,但我不断收到一个错误消息:

Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:181)
at Gui.<init>(Gui.java:10)
at Apples.main(Apples.java:7)
使用getClass().getClassLoader().getResource(字符串)

/e1我在另一个答案上解释了不同的getResource(String)方法。

看起来传递到ImageIcon构造函数中的一个(或多个)参数为null。这是因为在此处找不到资源:

private Icon[] pics = {new ImageIcon(getClass().getResource(filename[0])), new      ImageIcon(getClass().getResource(filename[1]))};
你为什么不直接用它呢

new ImageIcon(String filename)
??我无法100%确定getResource是如何工作的,我从未使用过它。

请执行以下操作: 你必须把你的.png

在你的.class文件旁边 (项目名称/bin中)

然后您的文件路径可以识别

那就行了
请记住,您使用的是类加载器,因此如果您将图像放在.class文件旁边,它将是正确的

我是一个完全的初学者-您能解释一下getClassLoader在做什么吗?类加载器负责加载类。也就是说,给定.class文件的名称,它应该为其创建一个类。每个类都由一个类加载器加载,每个类都包含对加载它的类加载器的引用。虽然我非常喜欢截图,但在这种情况下,复制/粘贴异常stacktrace会提供图像中的每一位信息(1241px×1042px&超过150Kb),执行此操作所需的字节数少了很多。请遵循教程类。getResource(String)在包中查找资源。getResource(字符串)在源文件夹中查找资源。新图像图标(字符串)在源文件夹外查找资源。
new ImageIcon(String filename)