2011-12-28 11 views
6

duplicación Posible (resuelto): https://stackoverflow.com/a/1133132/783469¿Cómo cargar el icono del recurso en Java?

tengo iconos (JPG, PNG) para mi aplicación, que se almacena en mi directorio /var/tmp/gameXbox/src/image/<here>. Ahora, ¿cómo puedo usarlos en la aplicación, sin usar el enlace físico sino como recurso?

Ejemplo: no trabajar

IconForMyButton = ImageIO.read(new File(
        ClassLoader.getSystemResourceAsStream("image/button1.png") 
       )); 

enter image description here

Obras cuando lo hago con enlace duro:

IconForMyButton = ImageIO.read(new File(
         "/var/tmp/gameXbox/src/image/button1.png" 
       )); 
+2

Asegúrate de que las imágenes estén en el classpath de tu aplicación, y usa un enlace relativo – Robin

+0

¿Qué quieres cargar? Una imagen de classpath o sistema de archivos? Esta es una diferencia. Estás mezclando ambas cosas. –

+0

@Google: confirme primero, desea mostrar este ícono en su botón, como lo sugiere su variable. ¿Estoy en lo cierto acerca de eso? Saludos –

Respuesta

9

carga de recursos tiene lugar en la ruta de clase, en relación con el paquete actual. Si /var/tmp/gameXbox/src/ está en la ruta de clases, entonces:

ImageIO.read(ClassLoader.getSystemResource("image/button1.png")); 

Sin embargo, por lo general la carpeta src es no incluido en la ruta de clase de entornos de desarrollo. Intente agregar la imagen a la carpeta bin.

+0

project/build/classes/image/* existe. Pero no funciona Ver mi edición arriba. – YumYumYum

+0

He editado mi respuesta. Ni siquiera me di cuenta. Intentabas crear un objeto 'File' a partir de' InputStream' y I, desde una 'URL'. – Darkhogg

+0

import javax.imageio. *; (para usar ImageIO) – shieldgenerator7

4

lo general el uso class.getResource para este tipo de operación:

YourClass.class.getResource("image/button1.png") 

lo uso para recuperar el archivo desde el archivo jar pero debería funcionar también para recuperar de los recursos del sistema de archivos.

0

Las imágenes no entran en una carpeta de origen sino en una carpeta de recursos. Arregle su IDE y use Maven y funcionará con getResourceAsStream con el cargador de clases de contexto actual.

Cuestiones relacionadas