Reputation: 14751
String str1 ="C:\Users\mehdi\Documents\NetBeansProjects\project1\src\res\1 (21).png ";
String str2 =" \res\1 (21).png";
jLabel24.setIcon(new ImageIcon(getClass().getResource( ? ) ) );
The path of string str1,str2 are same.
But when I put str1 instead of ?
an exception is thrown. But when I put str2 it doesn't have any problem.
What is problem? How can I solve it?
i changed str1 to
str1 = "C:\\Users\mehdi\\Documents\\NetBeansProjects\\project1\\src\\res\\1 (21).png "
and
jLabel24.setIcon(new ImageIcon(?) );
but this exception threw.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:167)
at project1.NewUser.jButton7ActionPerformed(NewUser.java:1173)
at project1.NewUser.access$1100(NewUser.java:30)
at project1.NewUser$12.actionPerformed(NewUser.java:326)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6267)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6032)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Upvotes: 0
Views: 157
Reputation: 12054
when tou give
getClass().getResource( ? )
? have relative
path from folder that contains class file of this code so put in this relative path
and use File.separator
or \\
or /
instead \
Upvotes: 0
Reputation: 1499860
There are a number of problems here:
getResource
, which I believe is designed to work with forward slashesClass.getResource
takes a filename. It doesn't - it takes a resource name. You can't access arbitrary files anywhere on the filesystem using Class.getResource()
; that's not what it's there for.If you want to create an ImageIcon
from a filename, just use the ImageIcon(String)
constructor:
String str1 = "c:\\Users\\mehdi\\...";
jLabel24.setIcon(new ImageIcon(str1));
Upvotes: 4
Reputation: 59650
You can not use single \
in path use \\
or /
or File.separator
instead.
String str1 ="C:\\Users\\mehdi\\Documents\\NetBeansProjects\\project1\\src\\res\\1 (21).png ";
String str2 =" \\res\\1 (21).png";
Upvotes: 0
Reputation: 137282
You need to escape each backslash:
String str1 ="C:\\Users\\mehdi\\Documents\\NetBeansProjects\\project1\\src\\res\\1 (21).png ";
etc.
Even better - use File.separator
instead of those separators.
Upvotes: 2