Modifier l'affichage d'un JLabel

Résolu/Fermé
Nono_1 Messages postés 2 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 1 décembre 2014 - 1 déc. 2014 à 09:35
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 1 déc. 2014 à 14:14
Bonjour à tous,

J'écris un petit programme en Java qui consiste à créer deux boutons dans un JPanel (le tout dans un JFrame). Je voudrais modifier l'affichage du JLabel selon sur quel bouton on appuie.
Si on appuie sur le premier bouton, j'affiche "Vous avez appuyé sur Bouton 1".
Le problème c'est que mon programme compile sans erreurs mais rien ne se passe quand j'appuie sur un bouton ou l'autre.
Voici mon code :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.Cursor;
import java.awt.event.*;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.BorderLayout;

public class MaFenetrePrincipale extends JFrame implements ActionListener
{
   JButton bouton1 = new JButton("Bouton 1");
   JButton bouton2 = new JButton("Bouton 2");
   
   JLabel lab = new JLabel("Bonjour le monde !");  //créer un label 
   
    public void actionPerformed(ActionEvent e1) 
    {
        bouton1.addActionListener(this);
        bouton2.addActionListener(this);
        if(e1.getSource().equals(bouton1)) 
      
            lab.setText("Vous avez appuyé sur Bouton 1");
            else
                lab.setText("Vous avez appuyé sur Bouton 2");
      
    }
    
    public MaFenetrePrincipale()
    {   
        JPanel panel = new JPanel();
        JButton bouton1 = new JButton("Bouton 1");
		JButton bouton2 = new JButton("Bouton 2");
        JLabel lab = new JLabel("Bonjour le monde !");  //créer un label
    
        // paramètres de JFrame
        this.setVisible(true);
        this.setSize(500,500);
        this.setLocation(100,100);
        this.setTitle("Ma première fenêtre");
        this.setResizable(true);
        Cursor curseur = new Cursor(Cursor.DEFAULT_CURSOR);
        this.setCursor(curseur);
        this.setBounds(250,250,270,230);
        
        bouton1.addActionListener(this);
        
        // j'ajoute les deux boutons et le label à JPanel
		panel.add(bouton1);
		panel.add(bouton2);
		panel.add(lab);
		
		// j'ajoute le JPanel à JFrame
        add(panel);
    }

    
    public static void main(String[] args)
    {
        MaFenetrePrincipale fenetreprincipale = new MaFenetrePrincipale();
    }
}



Quelqu'un pourrait m'aider ?
Merci d'avance,
A voir également:

2 réponses

Nono_1 Messages postés 2 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 1 décembre 2014 2
Modifié par Nono_1 le 1/12/2014 à 13:22
J'ai résolu le problème en mettant la méthode public void actionPerformed(ActionEvent arg0) à l'extérieur du constructeur.
Donc le nouveau code qui marche est le suivant :

 import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JFrame;
    import javax.swing.JButton;
    import java.awt.Cursor;
    import java.awt.event.*;
    import javax.swing.JPanel;
    import javax.swing.JLabel;
    import java.awt.BorderLayout;
    import java.awt.Color;
    
    public class MaFenetrePrincipale extends JFrame implements ActionListener
    {
        // instancier les objets
        private JButton bouton1 = new JButton("Bouton 1");
        private JButton bouton2 = new JButton("Bouton 2");
        private JPanel panel = new JPanel();
        private JLabel lab = new JLabel("Bonjour le monde !");  //créer un label    
            
        // constructeur
        public MaFenetrePrincipale()
        {   
            // paramètres de JFrame
            this.setVisible(true);
            this.setSize(500,500);
            this.setLocation(600,600);
            this.setTitle("Ma première fenêtre");
            this.setResizable(true);
            Cursor curseur = new Cursor(Cursor.DEFAULT_CURSOR);
            this.setCursor(curseur);
            this.setBounds(250,250,270,230);
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // fermer le processus quand on appuie sur la croix rouge de la fenêtre
            this.setContentPane(panel); // on dit à JFrame que son ContenPane sera "panel"
           
      
            panel.setBackground(Color.ORANGE);
      
      bouton1.addActionListener(this);
      bouton2.addActionListener(this);
      
      panel.add(bouton1); 
      panel.add(bouton2);
      
      panel.add(lab);
      
      // j'ajoute le JPanel à JFrame
            add(panel);
        }
        
        public void actionPerformed(ActionEvent arg0)
        {
            if(arg0.getSource() == bouton1)
                lab.setText("Vous avez cliqué sur le Bouton 1");
            else /*if(arg0.getSource() == bouton2) */
                lab.setText("Vous avez cliqué sur le Bouton 2"); 
        }

        
        public static void main(String[] args)
        {
            // créer une instance de la fenêtre
            MaFenetrePrincipale fenetreprincipale = new MaFenetrePrincipale();
        }
    }



Bonne journée,
3
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
1 déc. 2014 à 14:14
Merci beaucoup.
Bonne journée également.
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 750
1 déc. 2014 à 11:16
Bonjour,

Vous auriez, à priori, résolu cette question.
Merci de nous indiquer comment, cela pourrait servir à d'autres.

0