Bonjour à tous,
J'ai un petit soucis concernant un bouton Parcourir implémenté à chaque ligne d'une JTable.
Pour commencer, j'ai construit ma table sur ce principe : Jbutton dans une JTable
Ce principe fonctionne très bien pour les boutons qui exécutent une action instantanée, mais la méthode fileChooser.showOpenDialog est bloquante et c'est de là que vient le problème.
Le problème, c'est qu'une fois que la fenêtre du JFileChooser se referme, le bouton parcourir ne revient pas à son état initial de ButtonRenderer, mais reste le bouton retourné par la méthode détaillée ci-dessous. Il faut donc que je re-clique dessus (clic sans effet) pour qu'il retrouve son état initial, et que je re-re-clique dessus pour ouvrir à nouveau le JFileChooser
Voici les seules modifs que j'ai apporté au code fourni ci-dessus :
Je n'ai modifié que ça dans le code. J'ai mis en commentaire la ligne "p = fileChooser.afficher() " et ça marche super, le bouton revient à son état initial et si je re-clique dessus le JFileChooser apparaît.
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 public class ButtonEditor extends DefaultCellEditor { ... public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { String p = "" ; MyFileChooser fileChooser = new MyFileChooser() ; p = fileChooser.afficher() ; // Bloquant en attendant la sélection d'un fichier if ( p != null ) { // Traitement } return bouton ; } ... } public class MyFileChooser extends JFileChooser { ... public String afficher() { int ret = this.showOpenDialog( frame ) ; if ( ret == JFileChooser.APPROVE_OPTION ) // Choix d'un fichier { return this.getSelectedFile().getAbsolutePath() ; } return null ; } ... }
Merci pour votre aide !
Partager