我正在用Netbeans为我的项目建立一个注册页面。所以我添加了一些图片和图标,它们是我从文件夹“AddNewBookIcons”、“adminIcons”和“icons”中导入的。这些文件夹只在我的源代码包中,并且与主java类文件夹在同一个目录中。
这是我的文件夹结构内的源代码包:folder str
用于图标或图像路径的示例代码
jLabel5 = new javax.swing.JLabel();
jLabel5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/signup-library-icon.png"))); // NOI18N
jLabel5.setText("jLabel5");
jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 140, 800, 420));
该图像文件是有效的,它是在图标文件夹内。我已经提供了写图标和图像路径也,但我仍然得到下面的错误:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.net.URL.toExternalForm()" because "location" is null
at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at jframe.SignupPage.initComponents(SignupPage.java:141)
at jframe.SignupPage.<init>(SignupPage.java:24)
at jframe.SignupPage$4.run(SignupPage.java:373)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:316)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:770)
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:391)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:740)
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)
我试图解决它采取的帮助,一些现有的资源在互联网上,但没有找到任何相关的细节,解决了我的问题。
预期:即使我提供了写入图像和图标路径,我也无法找出出现此异常的原因。或者我提供的路径应该以不同的方式写入?请帮助我。
1条答案
按热度按时间uqcuzwp81#
我很确定路径写错了。你可以用java写路径,用
\\
进入路径中的一个新文件夹。你必须用两个,因为其中一个是转义符,所以如果你放另一个,你就转义了转义符,回到正常的路径。不要用"/icons/signup-library-icon.png"
,试着用"\\icons\\signup-library-icon.png"
。如果不起作用,请尝试删除路径开头的两个正斜杠。