设置 Icon 时引发 NullPointerException

Throwing NullPointerException when setting the Icon

提问人:Ralph Daniel Honra 提问时间:9/17/2022 最后编辑:queegRalph Daniel Honra 更新时间:9/17/2022 访问量:456

问:

我目前正在学习如何在 JLabel 中插入图像。到目前为止,我正在遵循文档和说明,但仍然抛出一个.我是否遗漏了语法或其他东西?NullPointerException

我将发送一张图片,以更好地了解包和文件的位置和名称。很抱歉发送照片。

enter image description here

例外:

线程“AWT-EventQueue-0”java.lang.NullPointerException 中的异常:无法调用“java.net.URL.toExternalForm()”,因为“location”为 null 位于 java.desktop/javax.swing.ImageIcon。(ImageIcon.java:232) 在com.mycompany.hotel_management_system。Log_In。(Log_In.java:28) 在com.mycompany.hotel_management_system。Log_In.lambda$main$0(Log_In.java:329) 在 java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318) 在 java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:773) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:720) 在 java.desktop/java.awt.EventQueue$4.run(EventQueue.java:714) 在 java.base/java.security.AccessController.doPrivileged(AccessController.java:399) 在 java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 在 java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) 在 java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) 在 java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) 在 java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 在 java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Java Maven Swing NullPointerException ImageIcon

评论

0赞 Abra 9/17/2022
找到包含文件 的目录。该目录应有一个子目录。确保子目录包含文件 。然后试试这段代码:请参阅如何使用图标Log_In.classImagesImages212849.jpglabel.setIcon(new ImageIcon(getClass().getResource("Images/212849.jpg")));
0赞 Ralph Daniel Honra 9/19/2022
谢谢!我按照您发布的所有步骤进行操作,并且奏效了。不过,我确实观察到,当我进行项目时,我的文件夹也被删除了,所以我总是复制它并在之后再次粘贴它,然后再次粘贴以确保我的 Images 文件夹包含在我的 jar 中。ImagesClean and BuildClean and BuildBuild

答:

3赞 queeg 9/17/2022 #1

最有可能的是,您尝试加载的图像在预期位置找不到。

getClass().getResource(...)

应该返回一些 URL,但我怀疑那是空的。 将该行分成几行,并在两者之间检查结果(通过记录 URL,或仅通过与 null 进行比较)。

如果该 URL 如我所怀疑的那样为 null,则您要加载的资源不存在。将其添加到类路径或更正资源名称。

评论

0赞 eis 9/17/2022
或更正路径
0赞 FNL 9/17/2022
在某些情况下,可以通过以下方式解决问题: .在其他情况下,您必须以斜杠 (/) 开头路径,有时则不然。所以你也可以试试这个。getClass().getClassLoader().getResource(...)