开发者

Why does my icon handling code throw a NullPointerException?

I have added an image for my button,but when I run that frame this exception will be thrown .why?please help me.

init:

deps-jar:
compile-single:
run-single:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at javax.swing.ImageIcon.<init>(ImageIcon.java:138)
        at ClientGUI.IdAndPassw开发者_JAVA百科ordFrame.initComponents(IdAndPasswordFrame.java:91)
        at ClientGUI.IdAndPasswordFrame.<init>(IdAndPasswordFrame.java:22)
        at ClientGUI.IdAndPasswordFrame$4.run(IdAndPasswordFrame.java:200)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 1 second)

line 138:

public ImageIcon (URL location) {
    this(location, location.toExternalForm());
}

line91:

 jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yahoo_1.gif"))); // NOI18N

I use this poor checking (Peter Lang recommended)which is:System.out.println(getClass().getResource("/Images/yahoo_1.gif")); and it returns null,why? please help me.


This means, that getClass().getResource("/Images/yahoo_1.gif") returns null.

JavaDoc states that this happens if

the resource could not be found or the invoker doesn't have adequate privileges to get the resource.

  1. Check if getResource really returns null:
    System.out.println(getClass().getResource("/Images/yahoo_1.gif"));

  2. Make sure that your path is correct and that it is in your classpath.

EDIT:

I just tried it with NetBeans. I created the following structure

Source Packages
  Images
    yahoo_1.gif

and your code worked fine. Is this your structure?

Try to right-click on your application and select Clean and Build.


In order to fix this, the images need to be copied in the bin directory - not in src directory.

Otherwise you will get null all the time on getClass().getResource("image.png"). The path is not null and you can set it as the above - only if you copy the images that you need inside the binary directory, where .class files for your project are located.

This fixed the problem. Let me know if I helped in this.

Ioana


I had the same problem. What worked for me was:

  1. Look into the jar file or in the bin folder(the one with .class files) and see the path of image.
  2. List item


It looks like getClass().getResource("/Images/yahoo_1.gif") returns null i.e. the .gif cannot be found on your classpath. (Images versus images maybe?)


The URL being passed in is null from this line:

getClass().getResource("/Images/yahoo_1.gif")

From the JDK documentation:

[getResource(..) returns] A URL object for reading the resource, or null if the resource could not be found or the invoker doesn't have adequate privileges to get the resource

Maybe you meant ("Images/yahoo_1.gif") - i.e. relative path not absolute?


private class HandlerClass implements ActionListener{
        public void actionperformed(ActionEvent event){
            JOptionPane.showMessageDialog(null, String.format("%s", event.getActionCommand()));
        }

}


After reviewing some things when trying to add an image I was presented with the same problem that usually occurs in project with maven.

I found a solution that uses the full path to be able to access the image. Also, create a function that returns an icon with the image and automatically scaled according to the dimensions that are sent to it.

Path -> directory where the image is located, width -> width of the icon, heigth-> height of the icon I hope it serves you, this is my first contribution in the community

public Icon getIcon(String ruta, int width, int heigth) {
        Image image = (new ImageIcon(ruta)).getImage().getScaledInstance(width, heigth, 0);
        Icon mIcono = new javax.swing.ImageIcon(image);
        return mIcono;
    }
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜