Resulta muy frecuente que las aplicaciones necesiten trabajar con archivos para leer y guardar datos de manera que se pueda trabajar más adelante con ellos.

En esta ocasión vamos a ver el diálogo de selección de ficheros JFileChooser que permite seleccionar ficheros de nuestro disco duro o crear nuevos.


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class MySelector {
  public static void main(String[] args) {
    MyFrame frame = new MyFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}

class MyFrame extends JFrame{
  private JButton botonOpen = new JButton("Abrir");
  private JButton botonSave = new JButton("Guardar");
  private MyFileListener myFileListener =
          new MyFileListener(this);
  public MyFrame(){
    super("Ejemplo de JFileChooser");
    Container container = getContentPane();
    container.setLayout(new BorderLayout());
    container.add(botonOpen, BorderLayout.WEST);
    container.add(botonSave, BorderLayout.EAST);
    botonOpen.addActionListener(myFileListener);
    botonSave.addActionListener(myFileListener);
  }
}

class MyFileListener implements ActionListener{
  private JFileChooser chooser = new JFileChooser();
  private JFrame frame;
  public MyFileListener(JFrame frame){
    this.frame = frame;
  }
  public void actionPerformed(ActionEvent ae) {
    String textButton = ae.getActionCommand();
    String dialogTitle = "Abrir un fichero";

    if (textButton.equals("Guardar"))
      dialogTitle = "Guardar un fichero";

    chooser.setDialogTitle(dialogTitle);
    chooser.setMultiSelectionEnabled(false);
    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

    int sel = chooser.showOpenDialog(frame);
    if (sel == JFileChooser.APPROVE_OPTION){
      File selectedFile = chooser.getSelectedFile();
      JOptionPane.showMessageDialog(
         frame,
         selectedFile.getAbsolutePath());
    }else{
      return;
    }
  }
}

Como métodos útiles de JFileChooser destacaremos:

  • setDialogTitle(): el título de la ventana.
  • setMultiSelectionEnabled(): permitir seleccionar varios ficheros al mismo tiempo.
  • setFileSelectionMode(): indica si se pueden seleccionar ficheros, directorios o ambos.
  • setFileFilter(): permite incluir filtros para el listado de archivos.

Por Ricardo F