La lectura de ruta de la imagen con "ImageIO.read" que se mostrará en un JLabel

MELS:

Ruta local completa ( C:\\Users\\workspace\\myproject\\src\\eclipse\\mainclass\\icons\\my-image.png) funciona bien, pero utilizando el camino corto como en el código de abajo, da una excepción javax.imageio.IIOException: Can't read input file!.

¿Qué estoy haciendo mal aquí?

    JLabel lab_h1 = new JLabel();
    BufferedImage img = null;

    try {
        img = ImageIO.read(new File("icons/my-image.png"));

    } catch (IOException e) {
        e.printStackTrace();
    }

    Image dimg = img.getScaledInstance(140, 40,Image.SCALE_SMOOTH);

    lab_h1.setIcon(new ImageIcon(dimg));
Matt:

El problema que tiene, cuando intenta abrir un archivo con una ruta relativa se ve en relación con donde se ejecuta el programa. En lugar de esperar para obtener la ruta correcta, puede utilizar un recurso.

BufferedImage img = ImageIO.read( 
       YourClassName.class.getResource(
             "/mainclass/icons/my-image.png"
       ) 
 );

Creo que puede que tenga que jugar con el camino ya que no sé lo que es la estructura de su paquete. También estoy asumiendo que Eclipse agrupar archivos de recursos que están en su carpeta de origen.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=394629&siteId=1
Recomendado
Clasificación