[java debutant] getSource()

defi -  
choubaka Messages postés 39986 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

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

c'est bizarre ... les deux types de déclarations sont effectués au même endroit ?
0
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
choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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
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
choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   2 105 > defi
 
il vaut donc mieux les déclarer comme attribut de classe et non pas comme attribut de méthode ...

0
choubaka Messages postés 39986 Date d'inscription   Statut Modérateur Dernière intervention   2 105
 
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
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
nass_java
 
domage il ya quelques erreurs de syntaxe
0