Bonjour à tous !
J'ai lu la FAQ et pense avoir parcourut tous les sujets concernants les jFileChooser de ce forum et je me trouve coincé malgré tout.
En fait, j'arrive à faire un jFileChooser pour ouvrir un fichier avec filtre qui fonctionne correctement (ex : n'affice que les fichiers XML et pointe d'office sur le répertoire de travail attribué). Mon problème est que j'aimerais faire la même chose pour sauvegarder. Visuellement, le jFileChooser créé indique le type de filtre que je désire utiliser (ex : "Fichier XML (*.xml)") mais... je peux donner l'extension que je désire à mon fichier, lorsque je clique sur "Sauver", il n'y a pas d'erreur ni d'exception... :-(
J'aimerais qu'au moins, il prenne le nom du fichier entré par l'utilisateur (même si celui-ci entre une extension fausse...) et que ça soit concaténé avec l'extension que je désire...
Voici le code de mon jFileChooser :
(sav est un int défini dans ma classe)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 /****************************************************/ //Cette fonction permet de créer une fenêtre pour sauvegarder //un fichier en forcant l'extension et en pointant sur le répertoire //de travail courant. Elle retourne un booléen qui indique si un //fichier a été choisi ou non. /****************************************************/ public boolean sauverFichier(FiltreExtension filtre, String fileDirectory) { boolean new_path = false; JFileChooser openFile = new JFileChooser(fileDirectory); // validation du filtrage à partir des arguments de la fonction openFile.setFileFilter(filtre); openFile.setAcceptAllFileFilterUsed(false); // ouvre une fenêtre de dialogue pour sauver un fichier sav = openFile.showSaveDialog(null); // retourne 'faux' s'il n'y a pas eu confirmation de sélection d'un // fichier et arrete l'exécution de cette fonction if (sav != JFileChooser.APPROVE_OPTION) { return new_path; } setPathFile(openFile.getSelectedFile().getAbsoluteFile(). getAbsolutePath()); new_path = true; return new_path; }
Voici le code de mon filtre :
[ Modéré par Viena ]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 /****************************************************/ // Cette classe permet de paramétrer les fenêtres de dialogues // pour sauver ou ouvrir un fichier en forcant l'extension // (i.e : on ne s'intéresse qu'aux fichiers XML...) /****************************************************/ package parseur; import java.io.*; public class FiltreExtension extends javax.swing.filechooser.FileFilter { private String description; private String[] extensions; /*****************************************************/ // Il y a deux constructeurs : pour filtrer plusieurs types de // fichiers ou seul à la fois. Pour le moment, dans le projet, nous // ne filtrons qu'un type de fichier à la fois. /*****************************************************/ public FiltreExtension(String description, String[] extensions){ super(); this.description = description; this.extensions = (String[]) extensions.clone(); } public FiltreExtension(String description, String extension) { this(description,new String[]{extension}); } /*****************************************************/ //Comportement de l'affichage de la boîte de dialogue à laquelle // on a associé un filtre /*****************************************************/ public boolean accept(File file) { if(file.isDirectory()) { return true; } String nomFichier = file.getPath().toLowerCase(); int n = extensions.length; for(int i=0; i<n; i++) { if(nomFichier.endsWith(extensions[i])) { return true; } } return false; } /*****************************************************/ // Permet de décrire le type de fichier (ex : "fichier XML (*.xml)" /*****************************************************/ public String getDescription() { return(this.description+" (*"+this.extensions[0]+")"); } }
Ajout d'un tag dans le titre : plus un titre est précis, plus les réponses le sont.
Les Règles du Forum
Partager