[java debutant] getSource()

Fermé
defi - 8 févr. 2006 à 23:57
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 - 3 mars 2008 à 07:41
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 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
3 mars 2008 à 07:41
ah bon ?
1
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
9 févr. 2006 à 08:18
salut

c'est bizarre ... les deux types de déclarations sont effectués au même endroit ?
0
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 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
9 févr. 2006 à 10:45
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
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 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104 > defi
9 févr. 2006 à 12:04
il vaut donc mieux les déclarer comme attribut de classe et non pas comme attribut de méthode ...

0
choubaka Messages postés 39407 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 9 décembre 2024 2 104
9 févr. 2006 à 11:57
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
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
domage il ya quelques erreurs de syntaxe
0