Comment ouvrir avec JFileChooser un ou plusieurs fichiers

JFileChooser est un très bon moyen pour créer les boites de dialogue pour ouvrir, sauvegarder et visualiser les fichiers et les dossiers.

Pour faire apparaître la boite de dialogue JFileChooser de l'ouverture, il suffit de taper ces deux lignes de code:

//Créer le file chooser
JFileChooser fc = new JFileChooser();
//la réponse quand un bouton est cliqué
int retour = fc.showOpenDialog(component_parent);

showOpenDialog ouvre la boite de dialogue d'ouverture. Cette méthode retourne un des trois valeurs possibles qui mentionnent laquelle des options est choisisse par l'utilisateur:
  • JFileChooser.CANCEL_OPTION: l'utilisateur a annulé l'ouverture;
  • JFileChooser.APPROVE_OPTION: l'utilisateur a validé l'ouverture;
  • JFileChooser.ERROR_OPTION: une erreur est survenue.
Ce code fait apparaître la boite de dialogue, sélectionne et charge le fichier choisi:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class JFileChooserTest {
public static void main(String[] args) {
final JFrame fenetre = new JFrame();
fenetre.setSize(200,200);
fenetre.setLocationRelativeTo(null);
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenetre.setVisible(true);
JMenuBar jmb = new JMenuBar();
JMenu jm = new JMenu("Ficher");
JMenuItem Ouvrir = new JMenuItem("Ouvrir");
jm.add(Ouvrir);
jmb.add(jm);

fenetre.add(jmb,BorderLayout.NORTH);

final JFileChooser fc = new JFileChooser();

Ouvrir.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int val_retour = fc.showOpenDialog(fenetre);

if (val_retour == JFileChooser.APPROVE_OPTION) {
File file = fc.getSelectedFile();
//afficher le nom du fichier
System.out.println("Nom du fichier : "+file.getName()+"\n");
//afficher le chemin absolu du fichier
System.out.println("Chemin absolu : "+file.getAbsolutePath()+"\n");
} else {
System.out.println("L'ouverture est annulée\n");
}
}
});
}
}
Sortie:

Comment ouvrir avec JFileChooser un ou plusieurs fichiers

L'écran du terminal après qu'on clique sur 'Ouvrir':

Nom du fichier : decTo Binaire.cpp

Nom du fichier : C:\Users\VAIO\Documents\CC++\decTo Binaire.cpp
Pour récupérer le fichier choisi, on fait appel à la méthode getSelectedFile(). Si la valeur de retour vaut JFileChooser.APPROVE_OPTION, la valeur retourné est une instance de la classe File.

On obtient le nom du fichier et son chemin absolu avec getName() et getAbsolutePath() respectivement. Si l'utilisateur annule l'opération, un message s'affiche indiquant l'annulation.

JFileChooser permet de sélectionner un ou plusieurs fichiers. Pour les ouvrir tous, on doit modifier le code. Les changements sont au niveau de la déclaration de l'instance File qui devient un tableau rassemblant les fichiers sélectionnés. On doit aussi demander à JFileChooser de nous donner la possibilité de sélectionner plusieurs fichiers en utilisant setMultiSelectionEnabled().

final JFileChooser fc = new JFileChooser();
fc.setMultiSelectionEnabled(true) ;
Ouvrir.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
int val_retour = fc.showOpenDialog(fenetre);

if (val_retour == JFileChooser.APPROVE_OPTION) {
File[] file = fc.getSelectedFiles();
//Boucle qui parcourt l'ensemble de fichiers
for(File f:file){
System.out.println("Nom du fichier : "+f.getName()+"\n");
System.out.println("Chemin absolu : "+f.getAbsolutePath()+"\n");
}
} else {
System.out.println("L'ouverture est annulée\n");
}
}
});
Exécution:

Nom du fichier : decTo Binaire.cpp
Chemin absolu : C:\Users\VAIO\Documents\CC++\decTo Binaire.cpp

Nom du fichier : decalage_tableau.cpp
Chemin absolu : C:\Users\VAIO\Documents\CC++\decalage_tableau.cpp

Nom du fichier : determinant_matrice.cpp
Chemin absolu : C:\Users\VAIO\Documents\CC++\determinant_matrice.cpp

Nom du fichier : equation-1-degre.cpp
Chemin absolu : C:\Users\VAIO\Documents\CC++\equation-1-degre.cpp
Références:
Creating JMenuBar Components : JMenuBar
Java Doc: showOpenDialog method