IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

[SWING] Bouton "Parcourir" dans une JTable


Sujet :

Composants Java

  1. #1
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut [SWING] Bouton "Parcourir" dans une JTable
    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 :
    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 ;
    	}
    ...
    }
    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.

    Merci pour votre aide !

  2. #2
    Membre chevronné Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Par défaut
    En fait j'ai trouvé la solution, il suffit de renvoyer null... Quand je clique sur le bouton il n'y a pas d'effet "d'enfoncement" du bouton, mais c'est pas grave !

    Nouveau code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	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 null;
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. bouton dans une jtable
    Par hokidoki dans le forum Composants
    Réponses: 1
    Dernier message: 15/05/2006, 18h46
  2. Réponses: 1
    Dernier message: 15/03/2006, 16h30
  3. Insertion des boutons et des images dans une JTable
    Par anouar dans le forum Composants
    Réponses: 2
    Dernier message: 17/11/2005, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo