es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La ubicación del archivo de imagen de Java es nula.

Intentando cambiar el icono de mi JFrame. He intentado múltiples métodos para obtener la imagen que quiero, pero ninguno ha funcionado. Solo obtengo ‘Cannot invoke “java.net.URL.toExternalForm()” because “location” is null’, lo cual sé que significa que el archivo no está ahí, pero lo está.

Aquí hay dos métodos que he intentado, y para el segundo, sí, tengo una carpeta creada para eso.

import java.awt.Image;
import java.net.URL;

import javax.swing.*;

public class ECFrame {
    JFrame frame;
    public ECFrame() {
        ImageIcon img = new ImageIcon("C://Users//jackk//eclipse-workspace//EasyChat//src//images//eclogotest.jpg");
        frame.setIconImage(img.getImage());

        frame = new JFrame("EC");
        frame.setSize(800,450);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setVisible(true);

    }
}
import java.awt.Image;
import java.net.URL;

import javax.swing.*;

public class ECFrame {
    JFrame frame;
    public ECFrame() {
        URL url = getClass().getResource("src/images/eclogotest.jpg");
        ImageIcon img = new ImageIcon(url);
        frame.setIconImage(img.getImage());

        frame = new JFrame("EC");
        frame.setSize(800,450);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setVisible(true);

    }
}
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “Cannot invoke ‘java.net.URL.toExternalForm()’ because ‘location’ is null” indica que la ruta del archivo de imagen no es correcta. En el primer método, la ruta del archivo es una ruta absoluta, lo cual puede no funcionar en diferentes máquinas. En el segundo método, la ruta del archivo es relativa al classpath, pero el directorio “src” no debería estar incluido.

    Para solucionar el problema, intenta eliminar el directorio “src” de la ruta del archivo en el segundo método:

    URL url = getClass().getResource("/images/eclogotest.jpg");
    ImageIcon img = new ImageIcon(url);
    frame.setIconImage(img.getImage());
    

    Asegúrate de que el archivo de imagen se encuentre en el directorio “images” dentro del classpath, el cual puede ser el directorio “src” para un proyecto Java estándar o el directorio raíz para un proyecto Maven o Gradle.

Comments are closed.