Changement d'état JButton [Résolu]

Signaler
Messages postés
12
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
22 avril 2009
-
Messages postés
12
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
22 avril 2009
-
bonsoir. ça fait un moment que je parcours le site en long en large et dans tous les sens humainement possible et ça m'a beaucoup aidé jusque'à maintenant mais là je bloque. peut-être ai-je mal cherché mais en tout cas je n'ai pas trouv la réponse a mon problème qui est le suivant:

je développe actuellement une ihm dans le cadre d'un projet pour mon bts. seulement voilà, je voudrais qu'un bouton change d'état pour réaliser une fonction différente une fois qu'il a été activé (connexion/déconnexion). j'ai tenté une solution a l'arrache mais bon comme l'indique le nom de la méthode c'est surement pas très efficace. le problème principal est que après deux ans de dévelopement c++ on nous balance sur java pour le prjet... du coup la réussite est assez limitée. si vous pouviez m'aider ça serait ma foi fort sympathique. je poste ci dessous la partie qui nous concerne:

private JButton getConnexion()
    {
        if (Connexion == null)
        {
            Connexion = new JButton();
            Connexion.setBounds(new Rectangle(5, 225, 139, 25));
            Connexion.setText("Connexion");
            if (Connexion.getText() == "Connexion")
            {
                Connexion.addActionListener(new java.awt.event.ActionListener()
                {
                    public void actionPerformed(java.awt.event.ActionEvent e)
                    {
                        bdd.Connexion();
                        Purge.setEnabled(true);
                        Connexion.setText("Déconnexion");
                    }
                });
            }
            if (Connexion.getText() == "Déconnexion")
            {
                Connexion.addActionListener(new java.awt.event.ActionListener()
                {
                    public void actionPerformed(java.awt.event.ActionEvent e)
                    {   
                        System.out.println(Connexion.getText());
                        bdd.Deconnexion();
                        Purge.setEnabled(false);
                        Connexion.setText("Connexion");
                    }
               
                });
            }
        }
        return Connexion;
       
    }

merci

3 réponses

Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Salut,

d'abord, la méthode que tu suit est fausse car l'ajout d'un ActionListener conserve les anciens Listener ajoutés.

Tu peux par exemple, faire un seul ActionListener où tu décides quoi faire selon la valeur d'une variable booléenne dédiée pour cela, et qui sera changée après chaque exécution du Listener.
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Statut
Membre
Dernière intervention
19 décembre 2016
23
En plus de la solution de Chatbour, il y a deux solutions :

- tu sauvegardes le ActionListener courant du bouton dans une variable et quand tu changes d'action, tu retire le dernier actionlistener avant d'ajouter le nouveau.

- ou bien (la meilleure à mon avis)
tu crées 2 boutons. et tu alternes les visibilités des boutons selon l'état (connecté/déconnecté).
Messages postés
12
Date d'inscription
lundi 28 avril 2008
Statut
Membre
Dernière intervention
22 avril 2009

merci beaucoup après avoir testé les différentes méthodes j'ai finalement opté pour la plus simple celle des deux boutons. merci a vous deux pour la rapidité et la pertinence de vos réponses.