Bonjour à tous,
Je réalise actuellement une interface graphique (GUI) en Java à l'aide de Swing et malgré beaucoup de temps passé à lire la JAVADOC et des tutoriaux, je ne trouve toujours pas la solution à mon problème.
C'est donc pourquoi je me tourne vers vous car votre expérience sur la programmation Java (comparée à la mienne qui est ridicule) pourra, je l'éspère, me permettre de sortir de l'impasse.
Ma GUI dispose d'un bouton "Browse" permettant à l'utilisateur de selectionner sur son ordinateur un dossier contenant des fichiers de données particuliers. Ces fichiers ont pour caractéristique principale de posséder l'extension .hst.tar.gz.
J'utilise donc un JFileChooser pour permettre à mon utilisateur de sélectionner ce dossier.
Cependant, je souhaite empêcher la selection de dossier non valide ou encore de fichiers. Pour le second point, j'aurais évidemment pu utiliser l'option "JFileChooser.DIRECTORY_ONLY" plutôt que "JFileChooser.FILES_AND_DIRECTORIES", cependant je souhaite que l'utilisateur puisse voir les fichiers contenus dans les dossiers afin de lui faciliter la selection.
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 public void actionPerformed (ActionEvent e) { UIManager.put("FileChooser.readOnly", Boolean.TRUE); //Create a file chooser JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); fc.setDialogTitle("Browse Histogram files Folder"); //In response to a button click: int returnVal = fc.showDialog(_parent, "Select"); if (returnVal == JFileChooser.APPROVE_OPTION) { File browse = fc.getSelectedFile(); _parent.get_hstselect().get_hstpath().setText(browse.getPath()); } }
Pour le premier point, j'imagine qu'il est impossible d'utiliser des filtres car le dossier racine ne comportant aucun fichier d'extension .hst.tar.gz, rien ne s'afficherait et donc il serait impossible de naviguer vers le dossier valide : Ceci ne reste qu'une supposition.
Mon idée était donc de désactiver le bouton "Approve" du JFileChooser tant qu'un dossier valide n'est pas sélectionné. Cependant, il n'existe pas de getter renvoyant le bouton "approve", je ne peux donc pas lui appliquer la méthode setEnabled(false) et j'ai exclu d'utiliser la méthode getComponent(int n) car :
* je ne connais pas et ne suis pas censé connaître le numéro correspondant au bouton "Approve".
* et on m'a toujours dit que la réflexivité, c'est mal.
Avez-vous des idées? Est-ce seulement possible? un élément de la doc m'aurait-il échappé? Est-ce possible en dérivant la classe JFileChooser?
Merci d'avance pour votre aide.
Partager