Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AWT:创建图标时出现NullPointerException_Java_Awt - Fatal编程技术网

Java AWT:创建图标时出现NullPointerException

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

每当我将图像设置为图标时,都会出现错误。 这是我的Addemployee代码:

错误是:

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
我找到了解决办法。 逐步解决方案:

  • 右键单击您的项目

  • 将鼠标悬停在“新建”上,然后选择“文件夹”

  • 将文件夹命名为“src/main/resources”

  • 将所有图像移动到该新文件夹

  • 当为图标选择图像时,进入图像的新文件夹包

  • 完成此操作后,将不再有空指针,并且在将其导出为ZIP时图像将被传输


    这应该可以解决这个问题,因为它对我有效

    显示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,但它不起作用