Problème JButton qui se lance plusieurs fois

Fermé
Strunksor - Modifié le 25 mai 2020 à 20:19
 Strunksor - 26 mai 2020 à 10:14
Bonjour,

Tout d'abord je tiens à préciser que je débute sur Java.
Le code risque surement de vous piquer les yeux...

Mon problème est le suivant, j'ai un bouton qui permet de lancer un calcul.
Je me suis rendu compte que lors de mon premier calcul tout se passait assez rapidement puis qu'au fur et a mesure que je cliquais sur le bouton pour lancer le même calcul se dernier prenait de plus en plus longtemps à se faire.

En cherchant je me suis rendu compte que quand je cliquais sur le bouton pour la première fois, le calcul était lancé une fois, puis deux fois pour le deuxième clique et ainsi de suite, d'ou une augmentation du temps de calcul.

Pour schématiser j'ai un classe main, une classe fenetre et une classe calcul.

Dans la main je créer l'objet puis je crée la fenetre :
static Fenetre fen = new Fenetre();
fen.fenetre();

Dans la fenêtre j'ai mon bouton :

    private JButton boutonStart = new JButton("Calculer");
    boutonStart.addActionListener(new boutonStartListener());

qui va avec la fonction boutonStartListener :
        class boutonStartListener implements ActionListener {
            public void actionPerformed(ActionEvent arg0) {

                c.calc(officier.get(0), officier.get(1), officier.get(2), place); (lance le calcul)
                fenetre(); (met à jour la fenetre)

            }
        }

Seriez vous me dire l'élément qui fait que le calcul se lance une fois au premier clique deux fois au second et ainsi de suite... Je suis persuadé que c'est quelquechose de très simple mais que je n'ai pas encore abordé d'ou ma venu ici...

Merci, Strunksor

2 réponses

KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
25 mai 2020 à 20:47
Bonjour,

Vu la description du problème je dirais que c'est peut être l'ajout du Listener (boutonStart.addActionListener) qui serait appelé à chaque clic sur le bouton de sorte qu'au premier clic il y a un boutonStartListener à exécuter, qui ajoute un deuxième listener, de sorte qu'au deuxième clic on a deux boutonStartListener à exécuter, etc.
0
Bonjour KX,

C'est effectivement c'est de la que vient le problème.

Merci pour l'aide j'ai réussi à "patcher".
0