Mahdi_Nine
Mahdi_Nine

Reputation: 14751

problem with jlable

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

Answers (4)

Nirmal- thInk beYond
Nirmal- thInk beYond

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

Jon Skeet
Jon Skeet

Reputation: 1499860

There are a number of problems here:

  • You have unescaped backslashes in your string literals
  • You are using backslashes in calls to getResource, which I believe is designed to work with forward slashes
  • You are assuming that Class.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

Harry Joy
Harry Joy

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

MByD
MByD

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

Related Questions