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.