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 :

[Listener] Plusieurs events envoyer alors qu'il n'y a qu'un clic ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut [Listener] Plusieurs events envoyer alors qu'il n'y a qu'un clic ?
    Bonjour a tous,
    Etant en train de realiser un petit programme en java (Swing/Awt) je suis confronter a un probleme que je ne comprends pas
    Voila, j'arrive a faire tous ce que je veux .. cependant a un moment donnee du programme j'ai un bouton "Ajouter" qui permet l'ajout d'info dans un fichier XML.
    L'ajout ce fais bien mais il se fait 3 fois .. en effet, a regarder un peu plus pres .. a chaque fois que je clique sur le bouton, c'est en realite 3 evenements qui sont leve .. et donc 3 ajouts qui se font dans le fichier XML :'(
    Je vous montre un peu mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            /* Ajout du bouton ajouter */
            if(ajouter==null)
                ajouter = new JButton("Ajouter au catalogue");
            ajouter.addMouseListener(new AjoutRecetteMouseListener());
            panel.add(ajouter,new GBC(0,5).setInsets(10));
    Voici le code avec lequel j'ajoute mon bouton a mon panel
    Rq : GBC est pour gridBagConstraints .. c'est la classe qui est dans la faq pour faciliter l'utilisation du GridBag Layout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    private class AjoutRecetteMouseListener extends MouseAdapter
        {
            public void mouseClicked(MouseEvent e)
            {
                ArrayList<String> liste = new ArrayList<String>();
                for(int i=0;i<dlm.getSize();i++)
                    liste.add((String)dlm.get(i));
                MenuEditorUtilities.ajouterRecetteCatalogue(titre.getText(),liste,preparation.getText());
            }
        }
    Voici mon listener .. La methode ajouterRecetteCatalogue de MenuEditorUtilities est juste la fonction qui ajoute la recette au fichier XML.
    Cette fonction fonctionne parfaitement .. mais est a chaque fois appeller 3 fois a chaque clique sur le bouton ajouter ..

    Je voulais donc savoir si quelqu'un a deja ete confronter a ce genre de situation .. car perso, je ne comprends pas pourquoi ca fais ca

    merci d'avance
    piff62

  2. #2
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Bonjour,

    Il faut utiliser un ActionListener pour les JButton et définir la méthode actionPerformed.

    Je ne suis pas sùr ( à vérifer donc ) mais la méthode mouseClicked est appellée au moins deux fois : une lors de l'appui sur la touche et une autre fois lorsque la touche est relachée.

    @+


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  3. #3
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Citation Envoyé par afrikha
    Bonjour,

    Il faut utiliser un ActionListener pour les JButton et définir la méthode actionPerformed.

    Je ne suis pas sùr ( à vérifer donc ) mais la méthode mouseClicked est appellée au moins deux fois : une lors de l'appui sur la touche et une autre fois lorsque la touche est relachée.

    @+
    Au debut j'utilisais bien un ActionListener .. mais il y avait le meme probleme .. c'est pour ca que j'avais egalement essayer un mouseListener avec son mouseClicked car je pense qu'au moins c'etait appeller qu'une fois lorsque le bouton de la souris est relacher
    Je vais essayer de remettre un ActionListener .. mais bon je doute ..

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2004
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2004
    Messages : 102
    Par défaut
    La manière la plus simple d'utiliser un bouton est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    protected javax.swing.AbstractAction myAction = new javax.swing.AbstractAction ("Titre du bouton"){ 
            public void actionPerformed(java.awt.event.ActionEvent etv)
            {
                 // Code de traitement : ajout de la donnée dans XML
            }
    };
     
    ...
     
    button = new javax.swing.JButton();
    button.setAction(myAction)
    A+
    H.

  5. #5
    Membre chevronné Avatar de piff62
    Inscrit en
    Décembre 2003
    Messages
    431
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2003
    Messages : 431
    Par défaut
    Bonjour hedes,
    Merci pour ta reponse ! mais je n'ai jamais vu cette methode .. je vais tester cela des que j'ai le temps et je te tiendrai au courant ..

  6. #6
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Que ce soit avec un ActionListener ou un MouseListener, la méthode ne devrait être appelée qu'une seule fois (pour le MouseListener il y a les méthodes mousePressed et mouseReleased).
    Tu n'ajouterais pas 3 instances du même Listener, par hasard ? Dans ton premier code, tu ne crées le JButton qu'une seule fois, mais tu lui ajoutes un nouveau Listener à chaque fois que ce code est exécuté. Si il est exécuté 3 fois, tu auras 3 Listeners différents, mais qui font la même chose à chaque clic.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

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

Discussions similaires

  1. Prob de listener (COMPLETE EVENT)
    Par Legogo dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 17/08/2008, 17h54
  2. tableau a plusieurs dimensions envoyé par xhr.send
    Par kapfab dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/03/2007, 16h24
  3. Réponses: 6
    Dernier message: 22/11/2006, 11h24
  4. [VB.NET] plusieurs checkbox plusieurs events
    Par b_lob dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/05/2006, 12h23
  5. [JButton][Event]Envoyer un événement
    Par willowII dans le forum Composants
    Réponses: 5
    Dernier message: 12/05/2005, 23h56

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