[java debutant] getSource()

defi -  
choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   -
En utilisant la methode getSource sur des boutons définis dans la classe.

Si dans la définition de la classe je crée deux bouton en mettant JBUTTON XXX1 = new JBUTTON("xxx1")
et le deuxieme ,
JBUTTON XXX2 = new JBUTTON("xxx2"),
la méthode getSource ne fonctionne dans actionPerformed, par contre si je mets
XXX1 = new JBUTTON("xxx1")
et le deuxieme
XXX2 = new JBUTTON("xxx2"), la méthode getSource fonctionne.

Pouvez-vous m'expliquer pourquoi?

4 réponses

  1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    ah bon ?
    1
  2. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    salut

    c'est bizarre ... les deux types de déclarations sont effectués au même endroit ?
    0
    1. defi
       
      Non,
      Les boutons se font dans la classe dérivée de JFrame et la methode getSource dans la méthode actionPerformed(), implémenté via l'interface ActionListener,
      defi
      0
  3. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    si je comprends bien dans ton deuxième cas

    XXX1 = new JBUTTON("xxx1")
    et le deuxieme
    XXX2 = new JBUTTON("xxx2"), la méthode getSource fonctionne.



    les boutons ont été déclarés dans les attributs de la classe dérivée de JFrame...
    Donc la visibilité s'étend à toute la classe et non pas uniquement au sein d'une méthode..

    Dans ton premier cas, seulement au sein d'une méthode, voire du constructeur.. Je me trompe?
    0
    1. defi
       
      Oui dans mon premier cas les boutons sont déclarés dans le constructeur.

      Aussi, si je comprends bien, le fait de ne pas déclarer les boutons étend la visibilité. Et si je déclare les boutons, ces derniers ne seront pas visibles aux autres classes? esct-ce bien cela?
      0
      1. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113 > defi
         
        il vaut donc mieux les déclarer comme attribut de classe et non pas comme attribut de méthode ...

        0
  4. choubaka Messages postés 5535 Date d'inscription   Statut Modérateur Dernière intervention   2 113
     
    essaye ça ... cas d'école de "comment utiliser les JButton"

    import java.awt.*;
    import java.awt.event.*;
    import java.swing.*;
    
    class TestPanel extends JPanel implements ActionListener{
    
    	private JButton boutonUn;
    	private JButton boutonDeux;
    
    	public TestPanel() {
    
    		boutonUn = new JButton("Un");
    		boutonDeux = new JButton("Deux");
    
    		add(boutonUn);
    		add(boutonDeux);
    
    		boutonUn.addActionListener(this);
    		boutonDeux.addActionListener(this);
    
    	}
    
    	public void actionPerformed(ActionEvent e){
    
    
    	Object source = e.getsource();
    
    	if (source == boutonUn)
    
    		System.out.printLn("Un");
    
    	else if (source == boutonDeux)
    
    		System.out.printLn("Deux");
    
    	}
    }
    
    class TestFrame extends JFrame{
    
    	public TestFrame(){
    	
    		setTitle("Test");
    		setSize(300,300);
    
    		addWindowsListener(new WindowAdapter()
    			{public void windowClosing(WindowEvent e)
    				{System.exit(0);
    
    				}
    			});
    		Container c = getContentPane();
    		c.add(new TestPanel);
    	}
    
    }
    
    public class TestButton{
    
    	public static void main (String[] args){
    
    		JFrame f = new TestFrame();
    		f.show
    	}
    }
    
    0
    1. defi
       
      Merci,
      je connais ce cas d'école. Je me posais juste cette question sur getSource() dans le cas ou la classe dérivée de JFrame et classe implémantant ActionListener n'était pas regroupées. En tout cas merci pour tes réponses.
      defi
      0
    2. nass_java
       
      domage il ya quelques erreurs de syntaxe
      0