Para tutorías y/o asesorías virtuales sobre JAVA SE y/o MySQL, escríbeme al formulario de contacto.

BUSCA MÁS CONTENIDO AQUÍ:



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.

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”:

curso de java, foto, java, formulario, label


curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label


*Luego crearemos un nuevo formulario (JFrame), y lo llamaremos “CargarFoto”:
  
curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label


*Agregaremos un JFileChooser al formulario que hemos creado, y lo llamaremos jfchCargarfoto:

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label


*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”:

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label
  

*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:

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label


*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:

curso de java, foto, java, formulario, label
  

*Nos saldrá un error, lo que haremos será importar la clase “java.io.File”:

curso de java, foto, java, formulario, label


*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.

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







*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: 

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

curso de java, foto, java, formulario, label

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. 
Si tienes dudas o sugerencias al respecto; puedes dejarnos tus comentarios.
Bendiciones...




Comparte este artículo






Sobre El Autor

Eduardo Bastidas UH

Cristiano y Colombiano. Analista de Sistemas & Blogger.
Me motiva mucho el poder compartir día tras día lo que he aprendido y voy aprendiendo en el área de las Tecnologías de la Información y las Comunicaciones.

23 comentarios:

  1. muchas gracias, por el tutorial

    ResponderEliminar
    Respuestas
    1. Nos 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 :)

      Eliminar
  2. Muy bueno, muchas gracias, ya había tenido varios intentos fallidos xD

    ResponderEliminar
    Respuestas
    1. De nada estimado visitante, es una alegría saber que hemos aportado un grano de arena para ayudarte, no olvides suscribirte ;)

      Eliminar
  3. gracias por compartir me ha servido bastante

    ResponderEliminar
    Respuestas
    1. Es muy gratificante saberlo, seguiremos publicando más contenido de calidad y utilidad para todos nuestros estimados visitantes.
      Bendiciones...

      Eliminar
  4. Just i need my friend :)
    Thanks a lot

    ResponderEliminar
  5. Excelente el tutorial!! Muchas gracias!!!

    ResponderEliminar
    Respuestas
    1. De nada estimado(a) visitante, es un gusto ayudar a nuestros amigos de la web.
      Si necesitas más recursos (códigos) de programación, también te recomendamos visitar esta web:
      http://codigosparadesarrolladores.blogspot.com/

      Bendiciones...

      Eliminar
  6. Hola compañero, una pregunta. En el proyecto de ha hecho solo se carga la imagen, no se guarda?.

    por 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

    ResponderEliminar
    Respuestas
    1. 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.
      Si 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...

      Eliminar
  7. Gracias brother,te tomaste tu tiempo para explicarlo perfectamente, muchas graciassss...

    ResponderEliminar
    Respuestas
    1. Saludos estimado Renzo García, lo hacemos con mucho gusto :)
      Quiero 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...

      Eliminar
  8. 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).

    ResponderEliminar
    Respuestas
    1. Saludo estimado Juan Barron.

      Te 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...

      Eliminar
  9. Gracias muchas Gracias ... Gracias por tu tiempo por todo ! gracias.. !

    ResponderEliminar
  10. Genial... 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

    ResponderEliminar
    Respuestas
    1. Saludo estimado Jose Rivera.

      En 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...

      Eliminar
  11. Excelente aporte... Me sirvio de mucho un millon de gracias

    ResponderEliminar
  12. Buen día disculpa podrias ayudarme a realizar esto pero guardando la imagen en la base de datos
    buen aporte este de antemano gracias

    ResponderEliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  14. A 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

    ResponderEliminar


RECIBIR NOTICIAS POR EMAIL


Suscríbete al boletín para recibir lo último en tu correo electrónico

¿NECESITAS AYUDA PARA PROGRAMAR EN JAVA SE Y MYSQL?