▷ Curso de JAVA: Cómo cargar una imagen y/o foto en un JLabel de un formulario, utilizando JFileChooser?
Cuando creamos un formulario, en especial aquellos donde recolectamos información de contactos (personas), se hace necesario el poder cargar una imagen y/o foto de los mismos; lo que facilitará su identificación.
En esta parte del curso de JAVA, veremos que para llevar a cabo lo anterior procederemos a utilizar un importante componente de JAVA, conocido como JFileChooser, mediante el cual podremos buscar archivos en nuestro PC y así cargarlos a nuestro software; en este caso archivos de imágenes (.jpg, .png, etc...) y mostrarlos en un label.
Cargar imagen en JLabel con JFileChooser |
Explicación por VideoTutorial:
Explicación por Foto-Tutorial:
*Procederemos a agregar a nuestro formulario principal "Formulario1", un JLabel y un JButton, y procedemos a personalizarlos, asignándoles también un nombre a cada uno; en este caso nuestro label se llamará “lblFoto”, y nuestro botón “btnCargarfoto”:
*Luego crearemos un nuevo formulario (JFrame), y lo llamaremos “CargarFoto”:
*Agregaremos un JFileChooser al formulario que hemos creado, y lo llamaremos jfchCargarfoto:
*Ahora haremos que el JFileChooser pueda ser accedido y/o usado desde otra Clase, para esto debemos darle la propiedad de ser público y estático; para ello daremos clic derecho sobre el elemento de JAVA (JFileChooser) y escogeremos la opción “Customize Code”, seguidamente nos saldrá una ventana en la cual nos dirigiremos a la lista desplegable “Access” ubicada en la parte inferior de dicha ventana y escogeremos la opción “public” y activaremos la casilla “static”, por último damos clic en el botón “OK”:
*Nos dirigimos nuevamente a nuestro formulario "Formulario1", y damos doble clic sobre el botón que agregamos “Cargar Foto”, e inmediatamente entraremos en el método de dicho botón, procedemos a borrar el comentario que se encuentra por defecto:
*Antes de comenzar a redactar líneas de código dentro del método del botón, daremos clic afuera de dicho método, más exactamente arriba y crearemos una variable de tipo File:
*Nos saldrá un error, lo que haremos será importar la clase “java.io.File”:
*Ahora nos dirigimos al método del botón, y colocamos el siguiente código:
int resultado;
CargarFoto ventana = new CargarFoto();
FileNameExtensionFilter filtro = new FileNameExtensionFilter("JPG y PNG","jpg","png");
ventana.jfchCargarfoto.setFileFilter(filtro);
resultado= ventana.jfchCargarfoto.showOpenDialog(null);
if (JFileChooser.APPROVE_OPTION == resultado){
fichero = ventana.jfchCargarfoto.getSelectedFile();
try{
ImageIcon icon = new ImageIcon(fichero.toString());
Icon icono = new ImageIcon(icon.getImage().getScaledInstance(lblFoto.getWidth(), lblFoto.getHeight(), Image.SCALE_DEFAULT));
lblFoto.setText(null);
lblFoto.setIcon( icono );
}catch(Exception ex){
JOptionPane.showMessageDialog(null, "Error abriendo la imagen "+ ex);
}
}
*Lo que hacemos en el código anterior en aspectos generales, es crear una variable tipo int, luego instanciamos un objeto de la clase CargarFoto, proseguimos a crear un filtro para determinar el tipo de archivo que podemos abrir, después aplicamos el filtro al JFileChooser.
Luego lo que se hace es mostrar al usuario, el formulario (JFileChooser) donde podrá elegir por ejemplo la foto del contacto y dependiendo de lo que haga el usuario; es decir, si carga o no un archivo (si da clic en Abrir o Cancelar), eso devolverá un valor entero el cual guardamos en nuestra variable int que creamos al principio.
Creamos de forma siguiente un condicional en el cual comparamos el valor que devuelve JFileChooser.APPROVE_OPTION (es cuando el usuario selecciona un archivo de su PC y da clic en Abrir), con el valor almacenado en nuestra variable tipo int; en el caso dado de que se cumpla dicha igualdad, procedemos a capturar en nuestra variable tipo File que creamos afuera del método del botón, el archivo que el usuario haya seleccionado.
Creamos un try – catch, y dentro del try lo que hacemos es instanciar un objeto de la clase ImageIcon de Java y le pasamos como parámetro nuestra variable tipo File pero convertida a String, seguidamente redimensionamos la imagen que se ha seleccionado dándole las medidas del Label donde se mostrará, luego lo que hacemos es quitar cualquier texto que haya en el label para que no interfiera con la imagen y/o foto, y por último mostraremos la imagen en el Label del formulario; en el caso dado de que suceda un error al abrir la imagen, se ejecutará lo que hay dentro del catch y se nos mostrará la excepción a través de un cuadro de diálogo.
Luego lo que se hace es mostrar al usuario, el formulario (JFileChooser) donde podrá elegir por ejemplo la foto del contacto y dependiendo de lo que haga el usuario; es decir, si carga o no un archivo (si da clic en Abrir o Cancelar), eso devolverá un valor entero el cual guardamos en nuestra variable int que creamos al principio.
Creamos de forma siguiente un condicional en el cual comparamos el valor que devuelve JFileChooser.APPROVE_OPTION (es cuando el usuario selecciona un archivo de su PC y da clic en Abrir), con el valor almacenado en nuestra variable tipo int; en el caso dado de que se cumpla dicha igualdad, procedemos a capturar en nuestra variable tipo File que creamos afuera del método del botón, el archivo que el usuario haya seleccionado.
Creamos un try – catch, y dentro del try lo que hacemos es instanciar un objeto de la clase ImageIcon de Java y le pasamos como parámetro nuestra variable tipo File pero convertida a String, seguidamente redimensionamos la imagen que se ha seleccionado dándole las medidas del Label donde se mostrará, luego lo que hacemos es quitar cualquier texto que haya en el label para que no interfiera con la imagen y/o foto, y por último mostraremos la imagen en el Label del formulario; en el caso dado de que suceda un error al abrir la imagen, se ejecutará lo que hay dentro del catch y se nos mostrará la excepción a través de un cuadro de diálogo.
Si quieres una explicación más detallada sobre cada línea del código anterior, no dudes en visitar:
Código JAVA: Cargar una imagen en un JLabel de un formulario, utilizando JFileChooser
Código JAVA: Cargar una imagen en un JLabel de un formulario, utilizando JFileChooser
*Ahora sólo queda ejecutar el proyecto y hacer las pruebas, si todo resulta como lo esperamos ya podremos mostrar la foto de nuestro contacto en el formulario:
Para descargar el video junto con el fascículo del presente tema del curso de JAVA, sólo debes dirigirte a nuestra Zona de Descargas, y dar clic sobre el icono "Curso de JAVA Parte 11".
Si deseas ver la Parte 10 del Curso de JAVA, puedes dar clic en el siguiente enlace: Curso de JAVA: Cómo hacer un Login, con usuario y contraseña fijos (sin conexión a Base de datos)?
Para ver todos los temas desarrollados hasta ahora en el Curso de JAVA puedes dirigirte al siguiente enlace:
¿Quieres aprender a realizar aún más cosas y personalizar tus programas hechos en el lenguaje de programación JAVA?, si tu respuesta es "Sí", puedes acceder a todos los tips que hemos estado publicando en este blog, dando clic aquí.
Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, YouTube y Google+.
Si te fue de gran ayuda este material, no olvides compartirlo con tus amigos.
Suscríbete a nuestro blog, vía Email o RSS; además puedes seguirnos a través de nuestras redes sociales como: Facebook, Twitter, YouTube y Google+.
Si te fue de gran ayuda este material, no olvides compartirlo con tus amigos.
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...
muchas gracias, por el tutorial
ResponderBorrarNos alegra mucho saber que le ha sido de gran ayuda, lo invitamos a seguirnos por las redes sociales y a suscribirse a nuestro blog para no perderse ningún artículo en especial del Curso de JAVA :)
BorrarMuy bueno, muchas gracias, ya había tenido varios intentos fallidos xD
ResponderBorrarDe nada estimado visitante, es una alegría saber que hemos aportado un grano de arena para ayudarte, no olvides suscribirte ;)
Borrargracias por compartir me ha servido bastante
ResponderBorrarEs muy gratificante saberlo, seguiremos publicando más contenido de calidad y utilidad para todos nuestros estimados visitantes.
BorrarBendiciones...
Just i need my friend :)
ResponderBorrarThanks a lot
You are welcome!
BorrarGod Bless you!
:)
Excelente el tutorial!! Muchas gracias!!!
ResponderBorrarDe nada estimado(a) visitante, es un gusto ayudar a nuestros amigos de la web.
BorrarSi necesitas más recursos (códigos) de programación, también te recomendamos visitar esta web:
http://codigosparadesarrolladores.blogspot.com/
Bendiciones...
Hola compañero, una pregunta. En el proyecto de ha hecho solo se carga la imagen, no se guarda?.
ResponderBorrarpor ejemplo si yo ejecuto la aplicacion y abro una imagen al momento de dar clic en guardar la imagen se queda grabada? si quiero ver de nuevo al contacto la imagen tambien se visualizara?...
No se si me explique xD
Saludo estimado(a) visitante, en este post sólo se explica la forma de cargar una imagen que está almacenada en una máquina (PC), para mostrarla en un label o etiqueta de un formulario.
BorrarSi lo que deseas es guardar en una base de datos la imagen que muestras en el JLabel, para luego visualizarla; te regalo el siguiente link donde encontrarás el código que necesitas para realizar dicho procedimiento:
http://codigosparadesarrolladores.blogspot.com/2015/06/codigo-java-guardar-imagen-en-una-base-de-datos.html
Bendiciones...
Gracias brother,te tomaste tu tiempo para explicarlo perfectamente, muchas graciassss...
ResponderBorrarSaludos estimado Renzo García, lo hacemos con mucho gusto :)
BorrarQuiero recordarte que puedes descargar los fascículos (PDF) y los videos del Curso de JAVA, desde nuestra página de descargas (accede dando Clic aquí).
No olvides compartir esta información en tus redes sociales :)
Bendiciones...
hola master buenas tardes gracias por compartir tus conocimientos y sabiduría , me puedes apoyar en el formulario donde cargas la foto , despues de alli deseo guardar la informacion + la foto del formulario en una tabla creada en una base de datos mysql (como guardar mis datos incluyendo la foto en mysql).
ResponderBorrarSaludo estimado Juan Barron.
BorrarTe regalo el siguiente post donde encontrarás lo que estás necesitando:
Código JAVA: Guardar imagen en una Base de datos
¡CRISTO TE AMA!
Bendiciones...
Gracias muchas Gracias ... Gracias por tu tiempo por todo ! gracias.. !
ResponderBorrarGenial... muchas gracias realmente funciona y ademas el tuto es muy facil de entender. Pero necesito molestarte ya que tengo que guardar ahora la imagen pero en una carpeta del pc, es decir no manejo ninguna base de datos todo se maneja con carpetas y archivo la razon es que asi me lo piden en el proyecto que desarrollo para la u
ResponderBorrarSaludo estimado Jose Rivera.
BorrarEn estos momentos no tengo un código publicado que haga lo que necesitas; sin embargo, lo que debes hacer es implementar un código que de forma automática te copie y pegue la imagen (usando la ruta de la misma) a una carpeta que tu especifiques.
Puedes escribirme al email desarrollouh@hotmail.com
Bendiciones...
Excelente aporte... Me sirvio de mucho un millon de gracias
ResponderBorrarBuen día disculpa podrias ayudarme a realizar esto pero guardando la imagen en la base de datos
ResponderBorrarbuen aporte este de antemano gracias
Este comentario ha sido eliminado por el autor.
ResponderBorrarA ver la cuestión es que ya tengo una imagen en MySQL pero hasta ahora no he podido ponerla en un jlabel si la logro obtener de la bd pero a la hora de convertirla a objeto imagen me manda un error que dice que es -1 o algo así alguien me puede ayudar con esto
ResponderBorrary si no tengo filechooser? :(
ResponderBorrarMe haz salvado! Gracias.
ResponderBorrarHola,muy buen vídeo pero una pregunta todo el código esta bien excepto en una linea que a mi me marca como error y no se por que y esa linea es la siguiente:
ResponderBorrarIcon icono = new ImageIcon(icon.getImage().getScaledInstance(lblFoto.getWidth(), lblFoto.getHeight(), Image.SCALE_DEFAULT));