Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 46
    Points : 16
    Points
    16

    Par défaut Multiples Listeners de JButton

    Bonsoir !

    Je suis actuellement en cours d'apprentissage du Java et j'essaie de m'habituer à la réalisation d'interfaces graphiques qui répondent à des actions.

    Pour expliquer mon soucis via un exemple ;

    J'ai une classe Main.java qui affiche une fenêtre avec deux JButton, un JButton Oui et un JButton Non.

    J'aimerai créer un listener dans une classe annexe qui exécute un morceau de code différent selon le bouton cliqué. Appelons cette classe listeners.java.

    Classe Main.java (aucune erreur signalée par Eclipse ici et l'interface s'affiche correctement)

    Code :
    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
    import javax.swing.*;
     
     
    public class Main extends JFrame {
     
    	private JPanel container = new JPanel();
     
    	public Main() {
    		this.setTitle("Programme"); 
    		this.setSize(550, 600); 
    		this.setResizable(false);
    		this.setLocationRelativeTo(null); 
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		container.setLayout(null);
     
    		JButton oui = new JButton("Oui");
    		oui.setBounds(100, 100, 100, 50);
    		JButton non = new JButton("Non");
    		non.setBounds(100, 150, 100, 50);
     
    		container.add(oui);
    		container.add(non);
     
    		this.setContentPane(container);
    		this.setVisible(true);
     
    		Listeners list = new Listeners();
    		oui.addActionListener(list);
    		non.addActionListener(list);
     
    	}
    	public static void main(String[] args) {
     
    		Main fenetre = new Main();
     
    	}
     
    }
    Classe Listeners.java erreur à "(source == oui)" ligne 12

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
     
    public class Listeners implements ActionListener {
     
     
    	public void actionPerformed(ActionEvent e) {
     
    		Object source = e.getSource();
     
    		if (source == oui) {
    			System.out.println("Clic sur Oui");
    		}
    		else {
    			System.out.println("Clic sur non");
    		}
     
    	}
    }
    Eclipse me souligne le "oui" cannot be resolved to a variable. Je ne sais pas comment faire le lien avec la variable déclarant le bouton Oui dans le Main.java

    Mon exemple peut paraître flou, si besoin d'explications supplémentaires je suis bien entendu disponible. Merci à vous.

  2. #2
    Membre du Club
    Inscrit en
    mai 2004
    Messages
    85
    Détails du profil
    Informations forums :
    Inscription : mai 2004
    Messages : 85
    Points : 55
    Points
    55

    Par défaut

    Salut dans ta main il suffit de rajouter
    et dans ta classe listener remplacer ton test par

    Code :
    if (((JButton)(e.getSource())).getName().equals("oui"))
    et ça roule.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : novembre 2012
    Messages : 46
    Points : 16
    Points
    16

    Par défaut

    En effet cela marche parfaitement, merci beaucoup.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •