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

Composants Java Discussion :

listener qui n'écoute pas


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut listener qui n'écoute pas
    Bonjour,

    je débute en Swing et je m'exerce en faisant des listener pour changer la couleur de mon "panel". Je crois avoir fait tout ce qu'il fallait: implementer l'interface ActionListener, définir la méthode actionPerformed, ajouter les listeners aux boutons... je ne sais pas ce qui manque. En fait quand on clique sur les boutons, ça ne fait rien du tout.
    Voici le code et merci.
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    package Frames;
     
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
    class Model extends JFrame implements ActionListener{
     
        public Model(){
     
            setTitle("REMPLISSAGE DE DONNEES");
            setSize(350,200);
            setLocationRelativeTo(null);
            setResizable(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            init();
     
        }
     
        public void init() {
     
           JPanel titres = new JPanel(new GridLayout(3,1));
           JLabel nom = new JLabel("Nom");
           titres.add(nom);
           JLabel prenom = new JLabel("Prénom");
           titres.add(prenom);
           JLabel adresse = new JLabel("Adresse");
           titres.add(adresse);
     
           JTextArea message = new JTextArea();
     
           JPanel saisie = new JPanel(new GridLayout(3,1));
           JTextField saisirNom = new JTextField(10);
           saisie.add(saisirNom);
           JTextField saisirPrenom = new JTextField(10);
           saisie.add(saisirPrenom);
           JTextField saisirAdresse = new JTextField(10);
           saisie.add(saisirAdresse);
     
           JPanel panelBoutons = new JPanel(new FlowLayout());
           JButton bvalider = new JButton("JAUNE");
           panelBoutons.add(bvalider);
           JButton bannuler = new JButton("ROUGE");
           panelBoutons.add(bannuler);
     
           bannuler.addActionListener(this);
           bvalider.addActionListener(this);
     
           getContentPane().setLayout(new BorderLayout(10,10));
           getContentPane().add(message, BorderLayout.NORTH);
           getContentPane().add(titres, BorderLayout.WEST);
           getContentPane().add(saisie, BorderLayout.CENTER);
           getContentPane().add(panelBoutons, BorderLayout.SOUTH);
     
        }
     
        private JButton valider;
        private JButton annuler;
     
       public void actionPerformed(ActionEvent e){
           Object source = e.getSource();
           Color color = getBackground();
           if(source == valider) color = Color.yellow;    
           else if (source == annuler) color = Color.red;
           setBackground(color);
           repaint();
       }
     
    }

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 20
    Par défaut
    Deja, je n'aurais pas fais ce genre de test :
    En cours du moins, on nous l'as fortement deconseiller. utiliser plutot les methodes de Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(source.equals(valider))
    Ensuite, tu cherche a savoir si ton bouton enfoncer est "valider", alors que tu ajoute sur ta fenetre "bvalider".
    Normal dans ce cas que ton Listener ne fasse rien.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut
    Merci beaucoup pour ta réponse NainzguL. J'ai corrigé le code, que voici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    JPanel panelBoutons = new JPanel(new FlowLayout());
           JButton jaune = new JButton("JAUNE");
           panelBoutons.add(jaune);
           JButton rouge = new JButton("ROUGE");
           panelBoutons.add(rouge);
     
           jaune.addActionListener(this);
           rouge.addActionListener(this);
    Cependant NetBeans me conseille fortement de renommer rouge et jaune.
    Par ailleurs, si j'enlève ces lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    private JButton jaune;
        private JButton rouge;
    il m'affiche un problème au niveau de la méthode actionPerformed()
    Des idées?

  4. #4
    Membre émérite
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Par défaut
    Bonjour,

    la condition "source == annuler" n'est jamais vérifiée car annuler reste à null

    il faut remplacer "JButton bvalider = new JButton("JAUNE");" par "valider = new JButton("JAUNE");" et idem pour annuler

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut
    Citation Envoyé par fnobb Voir le message
    Bonjour,

    la condition "source == annuler" n'est jamais vérifiée car annuler reste à null

    il faut remplacer "JButton bvalider = new JButton("JAUNE");" par "valider = new JButton("JAUNE");" et idem pour annuler
    merci fnobb, j'ai corrigé aussi ce que tu m'as proposé.
    Avantage: il ne me demande plus de renomer jaune et rouge.
    Inconvenient: ça ne marche toujours pas

  6. #6
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Bonjour, en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private JButton jaune;
    [...]
    JButton jaune = new JButton("JAUNE");
    Tu utilises 2 fois le même nom pour 2 variables différentes, sauf que pour appeler la 1ère il faudra faire this.jaune
    C'est pour cela qu'il est conseillé de ne pas faire de doublon, pour éviter la confusion.

    Il faut simplement faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private JButton jaune;
    [...]
    jaune = new JButton("JAUNE");

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2008
    Messages : 50
    Par défaut
    C'est déjà fait, merci morph41, mais ça n'arrange pas le problème

  8. #8
    Membre Expert
    Avatar de CheryBen
    Inscrit en
    Mai 2005
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 599
    Par défaut
    Suite à toutes les modifications, pourrais-tu reposter le code complet?

  9. #9
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2006
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2006
    Messages : 389
    Par défaut
    ta essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     if(source == bvalider) color = Color.yellow;    
           else if (source == bannuler) color = Color.red;
    A+

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

Discussions similaires

  1. Action Listener qui ne fonctionne pas
    Par pinps dans le forum Débuter avec Java
    Réponses: 36
    Dernier message: 21/11/2013, 17h09
  2. Réponses: 1
    Dernier message: 10/09/2008, 11h22
  3. addEventistener qui écoute pas mon click :(
    Par kimo0n dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 02/05/2008, 18h33
  4. Key Listener qui passe pas
    Par FCDB dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 09/04/2007, 21h31
  5. Réponses: 3
    Dernier message: 20/11/2006, 09h45

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