“Exception in thread “AWT-EventQueue-0″ java.lang.NullPointerException” occurs while adding images using ImageIcon

Issue

Firstly i applied panel on whole background & then created a label to set an image here. JFrame picture

I saw that there’s so many questions & answers related to null pointer exception but no one worked for me. the ImageIcon is not being able to fetch the image. I even tried by creating a folder & gave the path but the error remains same. Netbeans: 12.5 jdk:8 Please help me.Thanks in advance.

package com.mycompany.supershop;
import java.awt.Image;
import java.awt.Toolkit;
import javax.print.DocFlavor.URL;
import javax.swing.ImageIcon;
public class add_image extends javax.swing.JFrame {

    public add_image() {
        initComponents();

        ImageIcon img new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("shop_removebg.png"))); 
        Image img1img.getImage();
        Image img2  img1.getScaledInstance(jLabel1.getWidth(),jLabel1.getHeight(),Image.SCALE_SMOOTH);
        ImageIcon inew ImageIcon(img2);
        jLabel1.setIcon(i);


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate"collapsed" desc"Generated Code">                          
    private void initComponents() {

        jPanel1  new javax.swing.JPanel();
        jLabel1  new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setText("jLabel1");

        javax.swing.GroupLayout jPanel1Layout  new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(87, 87, 87)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(303, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(33, 33, 33)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(158, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout  new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );

        pack();
    }                      

    public static void main(String args[]) {

        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(add_image.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(add_image.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(add_image.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(add_image.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new add_image().setVisible(true);
            }
        });
    }            
    private javax.swing.JLabel jLabel1;
    private javax.swing.JPanel jPanel1;                
}

The error shows,

> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at sun.awt.SunToolkit.imageCached(SunToolkit.java:899)
    at sun.lwawt.macosx.LWCToolkit.getImage(LWCToolkit.java:549)
    at com.mycompany.supershop.add_image.<init>(add_image.java:24)
    at com.mycompany.supershop.add_image$1.run(add_image.java:107)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
------------------------------------------------------------------------

The problem is in this line,

ImageIcon img new ImageIcon(Toolkit.getDefaultToolkit().getImage(getClass().getResource("shop_removebg.png"))); 

images on request to show the errors:

picture1 picture2 picture3 picture4

Solution

Given the project structure, the valid path string to the image will be:

"/com/mycompany/supershop/shop_removebg.png"

Always use the / prefix to indicate a search from the root of the classpath.

Answered By – Andrew Thompson

Leave a Comment