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

AWT/Swing Java Discussion :

Problème avec listener (générer avec VE)


Sujet :

AWT/Swing Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut Problème avec listener (générer avec VE)
    Bonjour, j'ai (de nouveau...) un petit problème que je n'arrive pas à cerner :

    j'ai une JList (ou un JComboBox) sur lequel j'applique un listener via VE.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    listeUser.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
    						public void valueChanged(javax.swing.event.ListSelectionEvent e) {
    							System.out.println("e");
    						}
    					});
    Le problème c'est que dès que je change la selection, le fonction valueChanged s'effectue deux fois (donc j'ai deux fois e dans la console au lieu d'une)
    Je n'ai pourtant rien fait d'autre et dès que j'enlève ce listener je n'ai plus de reaction sur la liste.

    Savez vous d'ou ca peut provenir ?

    PS : je remplis ma liste avec une classe héritant de DefaultListModel.

    Merci pour votre aide

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les JList peuvent lever plusieurs évenements pour une sélection pour détailler les étapes. Si tu ne veux être avertis qu'une fois la selection réellement effectué, il suffit de vérifier l'état de l'attribut adjusting avec getValueIsAdjusting()...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                        public void valueChanged(javax.swing.event.ListSelectionEvent e) {
                            if ( ! e.getValueIsAdjusting() ) {
                                System.out.println( e );
                            }
     
                        }
    Le principe est un peu le même avec les JComboBox qui émettent deux évenement : un pour la déselection et un pour la selection...

    Plus généralement, lorsque tu recois "trop" d'évenement, il faut comparer les informations contenu dans l'Event pour pouvoir les distinguer...

    a++

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 260
    Points : 131
    Points
    131
    Par défaut
    C'est bien ce que je me disais mais je n'ai pas trouver d'infos de ce genre... c'est chose faite

    Par contre ce qui m'avait fait croire que cela ne venait pas de la, c'est que j'avais affiché le "selectedItem" et que pour les deux, il me mettait bien le nom de l'item selectionné. N'aurait-il pas du afficher " " puis le nom ?

    Merci beaucoup !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 44
    Points : 52
    Points
    52
    Par défaut
    Tu peux aussi utiliser un actionListener ou un itemlistener, ce qui t'évitera de faire le test (pour les combobox uniquement).
    Pour ce qui est de la "double execution", cela pourrait venir du fait que tu utilises un évènement de bas niveau, et donc correspondre à deux évènements qui seraient mousePressed et mouseReleased. C'est ce qu'il m'avait semblé lire dans les tutos de sun mais je n'arrive pas à remettre la main dessus. A vérifier

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

Discussions similaires

  1. [WD16] Problème d'un btach avec 1 projet avec plusieurs biblio
    Par law56100 dans le forum WinDev
    Réponses: 3
    Dernier message: 11/01/2013, 21h11
  2. Problème de listener, mémoire avec JSF
    Par curious_31 dans le forum JSF
    Réponses: 0
    Dernier message: 21/06/2010, 15h09
  3. Problème avec listener contrôl
    Par olikhvar dans le forum JDBC
    Réponses: 1
    Dernier message: 22/12/2008, 15h03
  4. Réponses: 2
    Dernier message: 26/10/2006, 10h13
  5. problème de capture son avec Directshow
    Par albator83 dans le forum DirectX
    Réponses: 2
    Dernier message: 06/11/2003, 17h18

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