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 :

Pbm d'ActionListener sur une JComboBox située dans une JTable


Sujet :

Composants Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Pbm d'ActionListener sur une JComboBox située dans une JTable
    Bonjour tout le monde,

    J'ai un problème de Listener sur un des composants JComboBox de mon application.

    Scénario général :
    • une JComboBox que je remplis et affecte comme éditeur d'une colonne de ma JTable.

    • Je mets cette JTable dans un JSCrollPane

    • Je mets ce JScrollPane dans un JPanel


    Ce que je veux faire :
    Losque l'utilisateur sélectionne un item de ma JComboBox, faire une action suivant la valeur de cette item. Pour simplifier, l'action est ici un simple affichage de l'item sélectionné

    Ce que je fais :
    J'ai placé un ActionListener sur ma JComboBox qui est sensé détecter la sélection d'un item. A priori cela devrait marcher. Cela fonctionne pour d'autres JComboBox que j'ai implémenté mais qui ne sont pas dans une JTable (elles sont ajoutés directement sur le panel).

    Problème :
    L'ActionListener ne fonctionne pas pour ma JComboBox située dans ma JTable !!!!! ); C'est comme si le fait d'utiliser une JComboBox comme éditeur de ma JTable, rajouter un palier, une couche supplémentaire que l'ActionListener (qu'implémente ma classe) n'arrive pas à écouter (à atteindre). C'est un peu comme ça que je le comprends, je me trompe peut-être. Que dois-je faire? J'ai vraiment essayer pas mal de choses (addComponentListener à ma JTable,...) mais rien ne fonctionne.

    Je vous envoie en pièce jointe les parties de code en relation. Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Peux-tu poster ton code pour qu'on en ait une meilleure idée?
    Avant cela je doute déjà fort que ton problème soit dû au fait que ta JComboBox soit dans une JTable.
    SCJP 5 | CAPM

  3. #3
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Désolé j'avais pas fait attention au fichier que tu as joint
    SCJP 5 | CAPM

  4. #4
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Essaie == au lieu de equals. Avec equals tu n'es pas toujours sûr de comparer les objets ou leurs références. ça peut être un faux ami

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		if(e.getSource()==cbxType_)	/* Dans ma compréhension :  si sélection d'un item dans la JComboBox alors....*/
    		{
    				/*  ...affichage de l'item sélectionné */
    			System.out.println(cbxType_.getSelectedItem().toString());
    		}
    Equals est une méthode assez sensible. Avec "==" tu es sûr au moins de comparer les références.
    SCJP 5 | CAPM

  5. #5
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Je viens d'essayer avec un '==' , mais cela ne fonctionne pas.

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci quand même pour la suggestion Welcome_59 . Si tuas d'autres pistes n'hésite pas.

  7. #7
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Voici probablement le problème: tu n'ajoutes pas l'actionListener à ta JComboBox. Solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    		/* Méthode qui instancie et initialise les composants  */
    	public void initComponent()
    	{
    		/*.....*/		
    		cbxType_ = new JComboBox();	/* Instanciation de la JComboBox */
                    cbxType_.addActionListener(this);
     
    	}
    Et garde le "==" pour tester la source de l'événement.
    SCJP 5 | CAPM

  8. #8
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    C'est un oubli dans mon fichier joint parce que dans mon code je fais bien un cbxType_.addActionListener(this); dans le constructeur par défaut , mais ça ne marche toujours pas. (et j'ai bien mis "==").

  9. #9
    Membre averti Avatar de welcome_59
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 203
    Points : 352
    Points
    352
    Par défaut
    Ta JComboBox ne serait pas vide par hasard?
    SCJP 5 | CAPM

  10. #10
    Membre expérimenté Avatar de herve91
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 282
    Points : 1 608
    Points
    1 608
    Par défaut
    Es-tu sûr que la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modelCommentaires_.isCellEditable()
    renvoie true pour la 4è colonne ?

  11. #11
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La comboBox n'et pas vide, je la remplie bien.
    isCellEditable() renvoie "true" pour toutes mes colonnes.

    Merci bcp pour vos suggestions. Je continue de chercher et je vous tiens au courant.

  12. #12
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé finalement où se situé le problème!!! En fait je rajoutais bien l'ActionListener à ma JComboBox (cbxType_.addActionListener(this); ), sauf qu'après je réinstanciais la JComboBox (pour lui allouer mon modèle de données), sans rajouter par la suite l'ActionListener.

    En résumé, 2 solutions à mon pbm :

    cbxType_ = new JComboBox(); /* Instanciation de la JComboBox */
    cbxType_.addActionListener(this); /* Ne pas oublier de rajouter l'ActionListener*/

    OU

    cbxType_.setModel(comboModel) /* Pas besoin de rajouter l'ActionListener de nouveau car la JComboBox n'est pas reconstruite, seul son modèle de donnèes est altéré*/


    Voilà!! Grand merci à vous pour vos suggestions

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

Discussions similaires

  1. [Toutes versions] Requête suppression basée sur un critère situé dans une autre table
    Par possible924 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/11/2014, 19h56
  2. Réponses: 6
    Dernier message: 13/11/2009, 17h06
  3. Réponses: 2
    Dernier message: 08/11/2007, 11h54
  4. Ouvrir une table située dans une base extérieure
    Par AndréPe dans le forum VBA Access
    Réponses: 3
    Dernier message: 17/06/2007, 12h43
  5. [JComboBox] Séparateur dans une JComboBox
    Par elan dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 16/06/2006, 10h52

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