Cargando imágenes desde Java
En este pequeño post veremos como cargar imagenes en Java, tanto si se encuentran dentro del mismo Jar de la aplicación, como si la imagen se encuentra fuera del misma.
En ambos casos vamos a utilizar la clase ImageIcon para recuperar la imagen. Luego de obtener la imagen, esta clase nos permitirá utilizarla tanto para íconos, fondo de contenedores, etc.
Imágen externa al Jar
Este es el caso que se produce cuando la imagen se encuentra en alguna carpeta del sistema operativo:

Para cargarla podemos indicarle a ImageIcon tanto el path relativo (desde donde se ejecuta el Jar) como el path absoluto de la imagen.
Se realiza de la siguiente forma (ver que se utiliza getImage()):
- Image imagenExterna = new ImageIcon(“tierra.jpg”).getImage();
Imágen interna al Jar
Este caso ocurre cuando la imagen se encuentra dentro del Jar de la aplicación:

Para cargarla podemos indicarle a ImageIcon el recurso que se quiere utilizar. Para instanciar el recurso debemos indicar el path relativo (desde la clase que quiere cargar la imagen) como el path absoluto de la imagen dentro del Jar (un path absoluto en el jar comienza con /, como por ejemplo “/ar/lefunes/recurso/imagen.png”).
Se realiza de la siguiente forma:
- Image imagenInterna = new ImageIcon(
- getClass().getResource(“satelite.jpg”)
- ).getImage();
Ejemplo
Un ejemplo de como se pueden utilizar estos conceptos junto con la clase JPanelConFondo que vimos en un post anterior.
Código:
- package ar.lefunes.cargarimagenes;
- import java.awt.Image;
- import javax.swing.ImageIcon;
- public class CargaImagenes extends javax.swing.JFrame {
- private JPanelConFondo jPanelConFondo1 = new JPanelConFondo();
- private JPanelConFondo jPanelConFondo2 = new JPanelConFondo();
- public CargaImagenes() {
- //…
- cargarImagenes();
- }
- private void cargarImagenes() {
- Image imagenInterna = new ImageIcon(
- getClass().getResource(“satelite.jpg”)).getImage();
- jPanelConFondo1.setImagen(imagenInterna);
- Image imagenExterna =
- new ImageIcon(“tierra.jpg”).getImage();
- jPanelConFondo2.setImagen(imagenExterna);
- }
- //…
- }
Al ejecutar el código obtendremos la siguiente pantalla:

tener en cunta que la imagen externa (”tierra.jpg” en este ejemplo) tienen que estar en la misma carpeta del jar, ó en la carpeta raiz del proyecto cuando ejecutamos el proyecto desde NetBeans.
Ejemplo Descargable
Puedes descargar el ejemplo completo desdehttp://lefunes.googlecode.com/files/CargarImagenes.zip (aprox. 54 KB)
Fuente: http://lefunes.wordpress.com/2009/01/29/cargando-imagenes-desde-java/