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 :

Mes boutons ne reagissent pas aux clics, probleme avec ma methode Listener


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Points : 52
    Points
    52
    Par défaut Mes boutons ne reagissent pas aux clics, probleme avec ma methode Listener
    Bonjour à tous,
    Je suis entrain de réaliser une fenetre divisé en 6 carrés(panels) avec 6 boutons chacun, j'aimerais que chaque fois que je clique sur un bouton
    la couleur de fond du panel change.
    Ma fenêtre s'affiche correctement mais lorsque je clique sur un bouton il y a rien qui se passe, j'ai l'impression c'est ma méthode ActionListener qui ne marche pas correctement, j'ai consulté plusieurs fac et site mais en vain, par consequant je sollicite votre aide, voici mon 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
    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
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
     
    /*
     * To change this license header, choose License Headers in Project Properties.
     * To change this template file, choose Tools | Templates
     * and open the template in the editor.
     */
    package test;
     
    //import java.awt.Color;
    import java.awt.*;
    //import java.awt.GridLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.util.Arrays;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import static javax.swing.JFrame.EXIT_ON_CLOSE;
    import javax.swing.JPanel;
    import javax.swing.border.LineBorder;
    import sun.org.mozilla.javascript.internal.ContextFactory.Listener;
     
    public class maFenetre {
     
        public static void main(String[] args) {
     
            JFrame fen = new JFrame();
            fen.setTitle("Ma fenetre");
            fen.setSize(600, 600);
            fen.setVisible(true);
            fen.setDefaultCloseOperation(EXIT_ON_CLOSE);
            JPanel mainPanel = new JPanel();
     
            fen.setContentPane(mainPanel);
     
            fen.setLayout(new GridLayout(2, 3));
     
            mainPanel.setBorder(new LineBorder(Color.RED));
            mainPanel.setLayout(new GridLayout(2, 3));
            mainPanel.setBackground(new Color(0,0,0,0));
     
            JPanel pan1 = new JPanel();
            pan1.setBackground(Color.yellow);
            pan1.setBorder(new LineBorder(Color.red));
            JButton vert = new JButton("Vert");
            vert.addActionListener(new MyAction());
            pan1.add(vert);
            mainPanel.add(pan1);
     
            JPanel pan2 = new JPanel();
            pan2.setBackground(Color.yellow);
            pan2.setBorder(new LineBorder(Color.red));
            JButton bleu = new JButton("Bleu");
            bleu.addActionListener(new MyAction());
            pan2.add(bleu);
            mainPanel.add(pan2);
     
            JPanel pan3 = new JPanel();
            pan3.setBackground(Color.yellow);
            pan3.setBorder(new LineBorder(Color.red));
            JButton cyan = new JButton("Cyan");
            cyan.addActionListener(new MyAction());
            pan3.add(cyan);
            mainPanel.add(pan3);
     
            JPanel pan4 = new JPanel();
            pan4.setBackground(Color.yellow);
            pan4.setBorder(new LineBorder(Color.red));
            JButton pink = new JButton("Pink");
            pink.addActionListener(new MyAction());
            pan4.add(pink);
            mainPanel.add(pan4);
     
            JPanel pan5 = new JPanel();
            pan5.setBackground(Color.yellow);
            pan5.setBorder(new LineBorder(Color.red));
            JButton magenta = new JButton("Magenta");
            magenta.addActionListener(new MyAction());
            pan5.add(magenta);
            mainPanel.add(pan5);
     
            JPanel pan6 = new JPanel();
            pan6.setBackground(Color.yellow);
            pan6.setBorder(new LineBorder(Color.red));
            JButton white = new JButton("White");
            white.addActionListener(new MyAction());
            pan6.add(white);
            mainPanel.add(pan6);
        }
     
        public static class MyAction implements ActionListener {
     
            public void actionPerformed(ActionEvent e) {
     
                if (e.getSource() == vert) {
                    pan1.setBackground(Color.green);
     
                }
                if (e.getSource() == bleu) {
     
                    pan2.setBackground(Color.blue);
     
     
                }
                if (e.getSource() == cyan) {
                    pan3.setBackground(Color.cyan);
                }
                if (e.getSource() == pink) {
                    pan4.setBackground(Color.pink);
                }
                if (e.getSource() == magenta) {
                    pan5.setBackground(Color.magenta);
                }
                if (e.getSource() == white) {
                    pan6.setBackground(Color.white);
                }
     
            }
     
            private JButton vert, bleu, cyan, pink, white, magenta;
            private JPanel pan1, pan2, pan3, pan4, pan5, pan6;
     
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Ton listener utilisent des composants qui ne sont pas initialisé, et qui ne correspondent pas à ceux que tu utilises dans ta fenêtre.

    Il ne suffit pas de donner le même nom à la variable pour que ce soit le même objet !!!
    Tu devrais revoir les notions de bases du langage !





    Sinon plus globalement le listener unique qui gère tous les boutons c'est bien lourd à gérer et source d'erreurs.
    Il est préférable d'écrire un listener adapté à chaque besoin.


    Dans ton cas un simple listener qui change la couleur de fond d'un composant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    	public static class BackgroundChanger implements ActionListener {
    		private final JComponent component;
    		private final Color color;
     
    		public BackgroundChanger(JComponent component, Color color) {
    			this.component = component;
    			this.color = color;
    		}
     
    		@Override
    		public void actionPerformed(ActionEvent e) {
    			component.setBackground(color);
    		}
    	}
    que tu utiliserais de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vert.addActionListener(new BackgroundChanger(pan1, Color.GREEN));
    bleu.addActionListener(new BackgroundChanger(pan2, Color.BLUE));
    ...


    A noter qu'à partir de Java 8 on pourra privilégier l’utilisation d'expression lambda :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    vert.addActionListener( event -> pan1.setBackground(Color.GREEN) );
    bleu.addActionListener( event -> pan2.setBackground(Color.BLUE) );
    ...


    a++

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Septembre 2008
    Messages : 69
    Points : 52
    Points
    52
    Par défaut
    Merci beaucoup c'est gentil, finalement j'ai trouvé la solution, effectivement le problème etait au niveau de mes boutons, il fallait que je les declare dans la classe pour qu'ils accessible par toutes methodes de la class.

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

Discussions similaires

  1. action de mes boutons ne fonctionne pas
    Par zaghdoud dans le forum JSF
    Réponses: 5
    Dernier message: 15/06/2011, 11h13
  2. mes boutons n'arretent pas de clignoter
    Par m_jaz3 dans le forum Flash
    Réponses: 3
    Dernier message: 22/10/2007, 20h14
  3. Réponses: 27
    Dernier message: 25/05/2007, 00h29
  4. [VB.NET] Probleme avec la methode ReadToEnd
    Par Aspic dans le forum VB.NET
    Réponses: 2
    Dernier message: 02/12/2005, 22h10
  5. [Struts] Problème avec la méthode validate
    Par clement42 dans le forum Struts 1
    Réponses: 2
    Dernier message: 09/06/2005, 11h52

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