Créer une boite de dialogue de sauvegarde avec JFileChooser

On a vu comment ouvrir un fichier avec JFileChooser, Maintenant, pour faire apparaître la boite de dialogue pour sauvegarder un fichier en Java, on doit invoquer la méthode showSaveDialog de la classe JFileChooser. La boite de dialogue de sauvegarde ressemble exactement à celle de l'ouverture, sauf pour le titre de la fenêtre et le texte du bouton pour approuver l'opération.

On affiche la boite de dialogue d'enregistrement avec ces deux lignes de code:

//instancier JFileChooser
final JFileChooser fc = new JFileChooser();
//invoquer la méthode showSaveDialog
int valeuretour = fc.showSaveDialog(fenetre);

L'instance JFileChooser est la même pour ouvrir les fenêtres de dialogue d'ouverture et de sauvegarde, donc vous devez utiliser la même instance File chooser et éviter de créer plusieurs versions.

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 SaveDialog {
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 Save = new JMenuItem("Enregistrer");
jm.add(Save);
jmb.add(jm);

fenetre.add(jmb,BorderLayout.NORTH);

final JFileChooser fc = new JFileChooser();

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

if (val_retour == JFileChooser.APPROVE_OPTION) {
File fichier = fc.getSelectedFile();
//afficher le chemin absolu du fichier
System.out.println("Chemin absolu : "+fichier.getAbsolutePath()+"\n");
} else {
System.out.println("L'enregistrement est annulée\n");
}
}
});
}
}
boite de dialogue de sauvegarde JFileChooser showSaveDialog

La console:

Chemin absolu : C:\Users\VAIO\Documents\CC++\test.txt
Vous pouvez changer le mode de sélection des fichiers. Par exemple, la ligne de code suivante rend possible de sélectionner seulement les dossier dans JFileChooser:

fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
Un autre mode de sélection est FILES_AND_DIRECTORIES. Le paramètre par défaut est FILES_ONLY.

Références
Oracle Doc:How to Use File Choosers
StackOverFlow:How to save a file using JFileChooser.showSaveDialog?