0

Tengo un que error se da cuando pongo una imagen dentro de un JLabel en un Jframe, sólo pasa cuando le pongo una imagen, si el label es un texto, funciona normal y me sale la ventana que creé

Se supone que el programa debería mostrarme una ventana con una imagen en el medio pero no inicia y arroja este error

    The POM for unknown.binary:AbsoluteLayout:jar:SNAPSHOT is missing, no dependency information available
    
    --- exec-maven-plugin:1.5.0:exec (default-cli) @ prueba2 ---
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at java.desktop/javax.swing.ImageIcon.<init>(ImageIcon.java:217)
        at principal.interfaz.initComponents(interfaz.java:38)
        at principal.interfaz.<init>(interfaz.java:9)
        at principal.interfaz$2.run(interfaz.java:75)
        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)
    ------------------------------------------------------------------------
    BUILD SUCCESS   

En el error también aparece que el pom esta perdido el absolutelayout.jar pero si lo tengo en mi paquete de dependencias. Y este es mi código llamado interfaz.java:

package principal;
public class interfaz extends javax.swing.JFrame {
    public interfaz() {
        initComponents();
    }

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

        titulo = new javax.swing.JLabel();
        botonSalir = new javax.swing.JButton();
        imageUser = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        titulo.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N
        titulo.setText("Mi programa");
        getContentPane().add(titulo, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, -1, -1));

        botonSalir.setText("Salir");
        botonSalir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonSalirActionPerformed(evt);
            }
        });
        getContentPane().add(botonSalir, new org.netbeans.lib.awtextra.AbsoluteConstraints(337, 266, -1, -1));

        imageUser.setBackground(new java.awt.Color(153, 204, 255));
        imageUser.setForeground(new java.awt.Color(153, 204, 255));
        imageUser.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/User.png"))); // NOI18N
        getContentPane().add(imageUser, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 0, 260, 300));

        pack();
    }// </editor-fold>                        

    private void botonSalirActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
    }

    /**
     * @param args the command line arguments
     */
    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(interfaz.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(interfaz.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(interfaz.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(interfaz.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        //@override
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                //@override
                new interfaz().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton botonSalir;
    private javax.swing.JLabel imageUser;
    private javax.swing.JLabel titulo;
    // End of variables declaration                   
}

La imagen que estoy usando si esta en la carpeta del proyecto es User.png

aqui esta

No sé si tendrá algo que ver con el error, pero estas líneas de código se muestran como señal de advertencia.

introducir la descripción de la imagen aquí

Eduardo Jiménez
  • 2,093
  • 2
  • 6
  • 26
Christian
  • 47
  • 7
  • Lee esto: https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados – Alex Jul 03 '20 at 14:08
  • no logro ver cual es el error, se que hay un valor que esta en null, pero en la primera linea del error: at java.desktop/javax.swing.ImageIcon.(ImageIcon.java:217) dice ImageIcon.java y no te deja escribir codigo. disculpa pero es que no comprendo muy bien aun. – Christian Jul 03 '20 at 14:29
  • El NPE se dispara en ImageIcon.java, pero eso es a consecuencia de algo que tu le pasaste y que es null. Fijate la siguiente linea del stack trace: principal.interfaz.initComponents(interfaz.java:51) Cuál es la línea 51 en tu clase interfaz? – Alex Jul 03 '20 at 14:41
  • (por cierto, interfaz no es un buen nombre para una clase, además de que los nombres de clase por convención deben comenzar con mayúsculas, el nombre se puede confundir con que es una interface) – Alex Jul 03 '20 at 14:43
  • La linea nro 51 de interfaz.java es el public static void main(String args[]) {}, no debe de haber ningun error ahi verdad? – Christian Jul 03 '20 at 14:43
  • No, esa no es la lína 51 que corresponde al stack trace. Probablemente hayas modificado algo luego de haber capturado el stack trace. Ejecuta el programa de nuevo, y edita la pregunta para colocar el stack trace correcto. – Alex Jul 03 '20 at 14:45
  • ya lo hice, si al parecer es en la linea 38 en donde se encuentra `imageUser.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/User.png"))); // NOI18N` – Christian Jul 03 '20 at 14:54
  • ¿Qué versión de netbeans usas? – Ruslan López Jul 03 '20 at 18:00
  • Estoy usando el Netbeans 11.3 – Christian Jul 03 '20 at 18:31
  • ¿Responde esto a tu pregunta? [Cargar imágen con maven da NPE ( Couldn't find file )](https://es.stackoverflow.com/questions/273988/cargar-im%c3%a1gen-con-maven-da-npe-couldnt-find-file) – Ruslan López Jul 04 '20 at 09:33
  • Bueno a mi lo que me funciono es que en Netbeans hay dos maneras de crear un proyecto y el primero sale java with Maven y Java with Ant si utilizas la primera opción(Maven) no te permite poner imagen pero si utilizas las segunda opción (Ant) y eligues Java Aplication te permite agregar las imagenes la razón lo desconozco pero eso me funciono tal vez pueda ser en tu caso. – user267393 Jan 26 '22 at 02:25

2 Answers2

0

me funciono esto: haces tu folder dentro de tu proyecto, pero debes marcar la casilla de external image

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

  • En efecto, es extraño que esto pase, no logré saber el porqué está pasando. Me funcionó lo que mencionó Aldo Méndez de seleccionar la imagen usando el fichero externo. Gracias por el aporte Man. – QuieroAprender Mar 30 '22 at 01:59
-1

El problema es que estás tratando de cargar el archivo User.png, pero no lo estás logrando, entonces lo que le estás pasando a javax.swing.ImageIcon() es null, y por eso luego tienes el NPE cuando trata de inicializar el ImageIcon. Verifica que el archivo exista en esa ruta, y que es visible para tu clase.

Leer archivos en Java a veces puede ser un poco tricky , hay muchas maneras de hacerlo. Pero en tu caso tienes el directorio de imágenes mezclado con tus clases, todo lo que no sea clases, debería ir en src/main/resources, y como resources queda en la raiz de tu classpath, podrías encontrarlo con:

getClass().getClassLoader().getResource("imagenes/User.png");

Alex
  • 1,137
  • 4
  • 9
  • el archivo User.png si existe en la ruta, voy a adjuntar una foto en la pregunta – Christian Jul 03 '20 at 15:06
  • lo que pasa es que he visto tutoriales en youtube de como hacer en interfaces en netbeans y todos hacian este tipo de procedimiento creando packages imagenes dentro de source packages y no tenian ningun tipo de inconveniente – Christian Jul 03 '20 at 15:38
  • 2
    -1 porque eso no corrije el problema con el absolutelayout, de todas formas no funcionará – Ruslan López Jul 03 '20 at 18:22
  • @RuslanLópez el problema del absoluteLayout no es tal, su problema era el NPE debido al error al leer el archivo gráfico, que yo explico aquí y tu vuelves a poner en tu respuesta. Quítame por favor ese -1 que es incorrecto. – Alex Jul 04 '20 at 09:28