Java AWT:创建图标时出现NullPointerException
每当我将图像设置为图标时,都会出现错误。 这是我的Addemployee代码: 错误是:Java AWT:创建图标时出现NullPointerException,java,awt,Java,Awt,每当我将图像设置为图标时,都会出现错误。 这是我的Addemployee代码: 错误是: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217) at InheritancePackage.AddEmployee.initComponents(AddEmp
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at InheritancePackage.AddEmployee.initComponents(AddEmployee.java:471)
at InheritancePackage.AddEmployee.<init>(AddEmployee.java:96)
at InheritancePackage.Menu.MainAddMouseClicked(Menu.java:554)
at InheritancePackage.Menu$9.mouseClicked(Menu.java:269)
at java.desktop/java.awt.Component.processMouseEvent(Component.java:6635)
at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
at java.desktop/java.awt.Component.processEvent(Component.java:6397)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4556)
at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常
位于java.desktop/javax.swing.ImageIcon.(ImageIcon.java:217)
位于InheritancePackage.AddEmployee.initComponents(AddEmployee.java:471)
在InheritancePackage.AddEmployee(AddEmployee.java:96)
在InheritancePackage.Menu.MainAddMouseClicked处(Menu.java:554)
在InheritancePackage.Menu$9.mouseClicked(Menu.java:269)
位于java.desktop/java.awt.Component.ProcessMouseeEvent(Component.java:6635)
位于java.desktop/javax.swing.JComponent.ProcessMouseeEvent(JComponent.java:3342)
位于java.desktop/java.awt.Component.processEvent(Component.java:6397)
位于java.desktop/java.awt.Container.processEvent(Container.java:2263)
位于java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
位于java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
位于java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
位于java.desktop/java.awt.LightweightDispatcher.RetargetMouseeEvent(Container.java:4918)
位于java.desktop/java.awt.LightweightDispatcher.ProcessMouseeEvent(Container.java:4556)
位于java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
位于java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
位于java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
位于java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
位于java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
位于java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
位于java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
位于java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
位于java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
位于java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
位于java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
位于java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
位于java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
位于java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
位于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)
我在jlabel中设置图标的方式是通过“项目中的图像”,如果您选中项目菜单,则包含图片包。所有使用的图片都在“图片”包中。
有人知道如何解决此问题吗?
getResource()
找不到图像并返回null
,这导致Icon类出现问题。检查图像的实际位置并使用正确的路径。我注意到,您在这里使用了绝对路径,因为它以/
jLabel18.setIcon(new javax.swing.ImageIcon(getClass().getResource("/InheritancePackage/Save_1.png")));
在计算机上,图像位于所需位置:
/InheritancePackage/Save_1.png
但在不同的计算机上,它不在/InheritancePackage/Save_1.png中,它与jar文件相对,因此找不到,因此图标为NullPointerException
相反,您应该使用相对路径,尝试在开始时删除/并使用:
InheritancePackage/Save_1.png
我找到了解决办法。
逐步解决方案:
这应该可以解决这个问题,因为它对我有效 显示AddEmployee.java的代码。现在应该添加它。我修复了图片的路径,它仍然会给出错误。就是这样,当我导出maven项目时,我希望图标保持不变,因为我已经尝试导出它,并且图标在另一台计算机上删除,因为路径不存在。最后,我不能编辑该区域,因为它受限制,我不允许编辑它。应用程序需要的所有资源都应该打包到JAR中,而不是留在JAR之外。很抱歉一直打扰您,但我查看了如何在JAR文件中制作图像,但我找不到它,我想知道你能不能把我弄出来?所以我设法编辑了文本,但它会给出同样的错误。现在的“InheritancePackage/Save_1.png”不是“/InheritancePackage/Save_1.png”,而是“图片文件夹中的Save_1.png”?因为我在上面截图的InheritancePackage文件夹中看不到它!!如果是这样的话,你需要使用Pictures/Save_1.png来代替。事实上,我把它改为Pictures/Save_1.png,但它不起作用