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

Interfaces Graphiques en Java Discussion :

problème de listener


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Par défaut problème de listener
    Bonjour,
    je débute avec SWING et donc la réalisation d'interfaces graphiques.

    J'ai fais un exemple simple: lorsque l'on clique sur le bouton, cela vient ajouter 1 au compteur et afficher ce compteur. J'ai une fonction main qui instancie tout simplement une MaFenetre.
    Pour cela j'ai procédé comme ci dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class MaFenetre extends JFrame{
        public MaFenetre () // constructeur
            {
            setTitle ("Gestion de clics") ;
            Toolkit tk = Toolkit.getDefaultToolkit() ;
            Dimension dimEcran = tk.getScreenSize() ;
            int larg = dimEcran.width ;
            int haut = dimEcran.height ;
            setSize (larg/2, haut/2) ;
     
            Container contenu = getContentPane() ;
            contenu.setLayout(new FlowLayout()) ;
     
            bouton = new JButton ("COMPTEUR") ;
            EcouterLabel ecoutelabel1 = new EcouterLabel(nbClics) ;
            bouton.addActionListener(ecoutelabel1);
            contenu.add(bouton) ;
     
            nbClics = 0 ;
            compte = new JLabel ("nombre de clics sur COMPTEUR = "+ nbClics) ;
            contenu.add(compte) ;
            }
     
        public int nbClics;
        public JTextField saisie, copie;
        private JLabel compte;
        private JButton bouton;
    }
    Il y a donc un listener sur le bouton "COMPTEUR"

    J'ai décidé de faire un listener dans un fichier séparé, j'ai donc créé une classe EcouterLabel dont voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class EcouterLabel implements ActionListener{
     
        private int n;
        public EcouterLabel(int n)
            {
             this.n = n;
            }
     
        public void actionPerformed (ActionEvent ev)
            {
             n=n+1;
             System.out.println (ev.getActionCommand()+" "+n) ;
            }
    }
    Jusque là tout va bien. "n" s'incrémente bien et s'affiche sur la console, mais comment faire pour pouvoir donner la valeur au label "compte"
    ev.getActionCommand() donne le nom de l'objet cliqué, mais comment modifier sa valeur dans la classe EcouterLabel ?
    car la méthode setText() ne peut pas s'appliquer...

    Ca doit etre assez trivial, merci pour vos réponses.

    Bonne soirée

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 17
    Par défaut
    J'ai réussi a résoudre tout ceci!
    Pour ceux que ca pourrait intéresser, il faut passer en parametre du listener le bouton lui meme, je mets le code qui fonctionne!

    Voici le code de la classe fenetre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    bouton = new JButton ("COMPTEUR") ;
            contenu.add(bouton) ;
     
            nbClics = 0 ;
            compte = new JLabel ("nombre de clics sur COMPTEUR = "+ nbClics) ;
            contenu.add(compte) ;
     
            EcouterLabel ecoutelabel1 = new EcouterLabel(compte, nbClics) ;
            bouton.addActionListener(ecoutelabel1);
    et ci-dessous le code du listener:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    public class EcouterBouton implements ActionListener{
     
        private JButton n;
        public EcouterBouton(JButton n)
            {
             this.n = n;
            }
     
        public void actionPerformed (ActionEvent ev)
            {
             System.out.println("appui sur le bouton: "+ev.getActionCommand());
             System.exit(0);
            }
    }
    Voilà,
    merci beaucoup, bonne journée!

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

Discussions similaires

  1. problème de listener lors du déploiment
    Par b.adonet dans le forum JSF
    Réponses: 4
    Dernier message: 23/04/2008, 16h37
  2. Problème de listener dans un JFormattedTextField
    Par Mischka dans le forum Composants
    Réponses: 1
    Dernier message: 11/03/2008, 13h01
  3. Réponses: 2
    Dernier message: 26/10/2006, 10h13
  4. Problème avec listener (générer avec VE)
    Par RR instinct dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 04/08/2006, 09h16
  5. problème de listener (oracle 9i)
    Par bouhn dans le forum Oracle
    Réponses: 1
    Dernier message: 23/01/2006, 14h59

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