Uso básico de elementos Swing con NetBeans – 15 – Uso básico de JFileChooser, diálogo de apertura con filtro de imagen simple y carga de imagen.

Trabajando con JFileChooser en Java. Selector de Archivos

Tercer ejemplo del uso que se le puede dar a un JFileChooser, esta vez el filtro que utilizaremos es simple y eficientes, no requiere de implementación alguna. También incluimos la posibilidad de abrir la imagen que se haya seleccionado.
Diseñamos un formulario utilizando un JFrame (Nombre del formulario UsoJFileChooser3). Para el diseño utilizamos un botón de comando (el icono para nuestro botón la obtenemos de nuestra carpeta de imágenes, como vimos en los primeros tutoriales de la serie), el botón lanzará el método que crea el JFileChooser dependiendo de cuál de los JRadioButton esta seleccionado, debajo del botón y el panel de JRadioButton tenemos otro panel que almacena un JLabel, la cual podrá mostrar texto o imagen dependiendo del caso. En la imagen siguiente vemos el diseño de nuestro formulario, cada elemento tiene un nombre de variable como se especifica en la imagen, tomar en cuenta este punto ya que es necesario para referenciar los objetos. Se puede cambiar el “Nombre de variable” de cada objeto haciendo clic derecho sobre la misma y clic en “Cambiar nombre de variable…”. (clic sobre la imagen para ampliar)
Abajo los métodos que estaremos utilizado. Cada uno tiene una función específica, se agregan comentarios para facilitar la comprensión. El método “inicio()” se llama desde el constructor del JFrame.
Código Java
    private void inicio(){
//Grupo de botones para que se seleccione un solo JRadioButton a la vez.
ButtonGroup br = new ButtonGroup();
br.add(rb1);
br.add(rb2);
br.add(rb3);
}
private void ver(){
//Dependiendo cual este marcada se ejecuta un grupo de codigos.
if(rb1.isSelected()){
//Se crea el JFileChooser
JFileChooser fl = new JFileChooser();
//Indicamos que muestre solo directorios.
fl.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
//Con showOpenDialog se lanza el JFileChooser, si es "Abrir" retorna 1 o -1 "Cancelar".
if(fl.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){
//Obtenemos el nombre del directorio
String fil = fl.getCurrentDirectory().getName();
//Borramos el icono de nuestro JLabel
jlb.setIcon(null);
//Mostramos los datos dentro de JLabel
jlb.setText("Opcion de directorio seleccionado: " + fil);
}
}
else if(rb2.isSelected()){
JFileChooser fl = new JFileChooser();
//Indicamos que muestre tanto directorios como archivos.
fl.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
if(fl.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){
//Optenemos el nombre del directorio
String fil = fl.getCurrentDirectory().getName();
//Obtenemos el nombre del archivo que se haya seleccionado
String file = fl.getSelectedFile().getName();
jlb.setIcon(null);
//Mostramos en el JLabel tanto el nombre del directorio como el nombre del archivo
jlb.setText("Archivo o directorio: [Carpeta: " + fil + "] [Archivo: " + file + "]");
}
}
else if(rb3.isSelected()){
JFileChooser fl = new JFileChooser();
//Indicamos que muestre tanto directorios como archivos.
fl.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//Creamos un filtro simple de formatos.
fl.setFileFilter(new FileNameExtensionFilter("Archivo de Imagen","jpg","png"));
if(fl.showOpenDialog(null)==JFileChooser.APPROVE_OPTION){
//Obtenemos el archivo seleccionado
File file = fl.getSelectedFile();
jlb.setText(null);
//Mostramos la imagen en nuestro JLabel.
//El método imgIcon() nos localiza el archivo y retorna como imagen.
jlb.setIcon(imgIcon(file));
}
}
}
//Método para retornar la imagen pasándole como parámetro un archivo.
private ImageIcon imgIcon( File fichero ){
ImageIcon imageIcon = new ImageIcon( fichero.getAbsolutePath() );
return imageIcon;
}
En la imagen siguiente vemos las importaciones que necesitamos, nuestro paquete si la utilizamos y el método que llámanos desde el constructor.
Lista de Importaciones. Código Java
import java.io.File;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;//Importaciones necesarias.
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
Para los botones como siempre se utiliza el evento “ActionPerformed”, en guías anteriores de esta serie vimos como se implementan los eventos. Seguido el evento individual necesario.
Código Java
    private void verActionPerformed(java.awt.event.ActionEvent evt) {                                    
ver();
}
Llegado a esta parte podremos ejecutar nuestro formulario. (Por si hay alguna duda en el proceso, debemos hacer clic derecho sobre nuestro archivo fuente y presionar “ejecutar archivo” ya que nuestro proyecto no tiene una clase principal definida)

No hay comentarios :

Publicar un comentario