_009

Todavia recuerdo que entre las primeras cosas que aprendi manejando Graphics en java fue a incrustar una imagen en un JPanel, al principio creo que como cualquiera, jalando la imagen desde una ruta completa, como

D:\\Mis Imagenes\img.png

o desde linux con:

/home/atxy2k/Images/img.png

Esto funcionaba, el problema era a la hora de mover la imagen o pasar el programa, claro, era novato, son cosas que dices en su momento que no importan, pero con el paso del tiempo me di cuenta de que era necesario buscar la manera de jalarla desde un paquete dentro de mi programa para que siempre tuviera la ruta correcta, en aquel tiempo tenia una persona que me «asesoraba» de manera sarcastica en como hacerlo, por tanto no lo aprendi muy bien que digamos, aunque eso no quita el agradecimiento de la ayuda, pero debido a un ultimo problema que tuve al insertar imagenes hace unas semanas por no recordar la completa sintaxis, decidi postearlo para aclarar las dudas de aquellos que las tengan y enceñarles a las personas que se interesen en hacerlo, para este ejemplo e creado un pequeño paquete con lo siguiente:

Selección_006

La carpeta del proyecto, que e estado usando para bloguear ultimamente, y dos paquetes mas, el de Examples, que es donde tengo el ejemplo que les mostrare, la clase IfInOneLine ignorenla n.n , ademas tengo un pequeño JFrame llamado Paint, donde lo unico que contiene es un panel con fondo blanco y un boton «Paint»,por ultimo tenemos un paquete resources ubicada dentro del paquete Examples, donde se encuentra ubicada la imagen, en este caso seleccione una de arch (comentario irrelevante), con esto tenemos lo suficiente para presentar un ejemplo, asi que comencemos, lo primero que haremos sera asignarle la accion al boton, esto no es mas complicado que darle un doble clic encima para que el IDE de netbeans (que es con el que estoy trabajando en este momento) le añada un evento ActionPerformed. Luego dentro de esto haremos lo siguiente:

Selección_010Explicación:

Linea 1: Creamos la instancia de la clase Graphics (paint es el nombre de la variable del panel) con Graphics paper = paint.getGraphics()

Linea 2: Creamos una Instancia de la clase URL con la dirección de la imagen, partiendo de la carpeta SRC, por ejemplo, la ruta completa de mi directorio de proyectos de netbeans es «/home/atxy2k/Netbeans Projects/SerProgramadorEs/src/Examples/sources/Arch-Linux.png», de esto, tomo lo que esta despues de src incluyendo la diagonal antes de Examples, para esto utilizamos la instruccion «getClass.getResource(«url»)» que dentro debera contener una dirección en String de la imagen contenida en los paquetes.

Linea 3: Procedemos a crear el objeto Image image utilizando un objeto ImageIcon pasandole como parametro la URL que creamos anteriormente y al finalizar, con «.getImage» obtenemos la imagen que contiene ese ImageIcon.

Linea 4: Simplemente dibujamos en el panel la imagen mandando a hablar al metodo drawImage que nos proporciona la clase Graphics.

Menú_008

Ok, hecho esto, antes de apresurarse a correr el programa, no olviden darle Limpiar y construir al paquete para que genere el archivo JAR y compile lo que le haga falta, de no hacer esto, lo mas seguro es que les lanze una excepción.

Para finalizar basta con correr el programa y podran observar la imagen dibujada en el panel como se ve en el encabezado del post. Y listo. Eso es todo, algo muy sencillo pero realmente util. xD