Recuperer le nom d'un bouton.

cs_bibe Messages postés 27 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 12 mars 2004 - 20 sept. 2002 à 11:55
 jysotech - 23 mars 2018 à 20:20
Bonjour,
Je fabrique une serie de bouton avec une boucle for
et je voudrais recuperer le nom du bouton sur le quel je clique.Je n'arrive a recuperer que le nom du dernier bouton.
voici la parti de code en question:

for (i=0;i<15;i++){
int j = 0;
int coordy = (j*32);
String sN_voiture = (String)vN_voiture.elementAt(i);
String sAnc_Num = (String)vAnc_Num.elementAt(i);

bt[j] = new Button(sAnc_Num);
bt[j].setFont(new Font("arial",Font.BOLD,14));
bt[j].setForeground(new Color(254,254,254));
bt[j].setBackground(new Color(220,0,0));
bt[j].setSize(30,20);
bt[j].setLocation(10,coordy);
bt[j].setName(sN_voiture);
bt[j].addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ac){
Detail_edit2 fenetre2 = new Detail_edit2(bt[j].getName());
}});
add(bt[i]);
j++;
}

2 réponses

JHelp Messages postés 261 Date d'inscription jeudi 5 septembre 2002 Statut Membre Dernière intervention 6 octobre 2005 11
20 sept. 2002 à 16:00
Ce qui ce passe est due à ta ligne :
Detail_edit2 fenetre2 = new Detail_edit2(bt[j].getName());

qui est dépendante de j.
Or j est modifier donc le resultat aussi.
En fait l'ActionEvent, que tu passes en paramètre de ton actionPerformed contient de multiples informations, dont le composant qui à généré cet évenement. C'est la méthode getSource.
Tu peux donc changer ta ligne en :
Button bouton=(Button)ac.getSource();
Detail_edit2 fenetre2 = new Detail_edit2(bouton.getName());


Si il ne s'agit que de transmettre une chaine de caractéres, tu peux utiliser une autre solution qui te consomera moins de resources.
1)Tu implémente ActionListener sur ton porteur de boutons.
2)Tu ajoute la méthode :
public void actionPerformed(ActionEvent ae)
{
     String chaine=ae.getActionCommand();
     Detail_edit2 fenetre2 = new Detail_edit2(chaine);
}

3)bouton.setActionCommand(String texte)
pouur chaque bouton
4)bouton.addActionListeneer(this);
Cette méthode économise les resources puisque qu'on utilise un seul ActionListener au lieu d'autant qu'il y a de boutons
:)
Si quelque chose n'est pas clair n'ésite pas.
JHelp.
1
Merci, ça m'a aidé...
0
cs_bibe Messages postés 27 Date d'inscription mardi 27 août 2002 Statut Membre Dernière intervention 12 mars 2004
23 sept. 2002 à 10:41
Votre Login vous va si bien...

Merci JHelp j'ai essayer la première des solutions que tu m'a soumis, et ca marche très bien.
Je verrais les problème en ce qui concerne les ressources plus tard.
Merci encore, et bonne journée.
PS: J'aurais surement pleins d'autres questions.
BIBE
0
Rejoignez-nous