x_O
Messages postés7Date d'inscriptionsamedi 23 avril 2005StatutMembreDernière intervention 7 mai 2005
-
23 avril 2005 à 12:44
cs_Spawnrider
Messages postés254Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention 9 avril 2007
-
5 mai 2005 à 13:18
Bonjour,
Je suis en train de réaliser une sorte d'applet de chat, et je voudrais que chaque participant puisse interagir avec un autre en cliquant sur un bouton.
A chaque nouvelle connexion, un nouveau bouton est crée et associé au nom.
Pour essayer de gérer un affichage "dynamique" je stock les boutons dans un vector, mais le hic, c'est que, systématiquement, l'ActionListener ne porte que sur le dernier bouton crée :'(
Si quelqu'un a une petit astuce pour que je puisse écouter les évenements sur tous les boutons ....
Merci
(ce n'est peut-etre pas très explicite, mais je ne suis pas chez moi et ne dispose pas de mes sources; j'essairai de les poster un peu plus tard ce WE, à moins que quelqu'un comprenne mon problème et sache y répondre)
cs_Spawnrider
Messages postés254Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention 9 avril 20071 4 mai 2005 à 08:49
Mouai nan je vois pas trop le probleme.
J'aurais utiliser un e.getActionCommand a la place de e.getSource et ne pas se fier au nom du bouton mais simplement au nom de la commande associé....
Sinon franchement ya un soucis dans ton gestionnaire d'evenement sur tes boutons soit tu n'as pas implementé addActionlistener(this) sur tout les boutons ou bien le soucis viens de getSource ....
x_O
Messages postés7Date d'inscriptionsamedi 23 avril 2005StatutMembreDernière intervention 7 mai 2005 28 avril 2005 à 01:29
Salut spawnrider,
merci pour ta suggestion, hélas (mille fois hélas !) je ne peux pas prévoir la chaine que tu as poétiquement baptisée 'tonString' étant donné que le nom apparaissant sur le bouton est celui d'un des connectés, et que je ne dispose pas de son nom avant connexion.
J'essairai de poster un bout de code demain pour etre plus explicite
cs_Spawnrider
Messages postés254Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention 9 avril 20071 28 avril 2005 à 10:53
Et bien ne met rien mais dés que l'utilisateur est connecté dans ce cas précis fais ton
setActionCommand sur le bouton lié a l'utilisateur ....
Vu que c'est dynamique fait le quand l'utilisateur est connecté !
x_O
Messages postés7Date d'inscriptionsamedi 23 avril 2005StatutMembreDernière intervention 7 mai 2005 29 avril 2005 à 02:07
:'(
J'ai beau tourner le problème dans tous les sens, à chaque fois, il n'écoute que les évènements portant sur le dernier bouton.
L'idée du vector n'était peut-être pas la meilleure, je suis ouvert à toute proposition si quelqu'un a une suggestion
(et puis faudrait vraiment que je pense a insérer un extrait de mes sources histoire que ca devienne plus explicite....)
ps : spawnrider : getElement() est refusé à la compilation (ou alors c'est moi qui l'implémente de travers, faut que j'arrete de coder à 2h du mat' moi !)
x_O
Messages postés7Date d'inscriptionsamedi 23 avril 2005StatutMembreDernière intervention 7 mai 2005 4 mai 2005 à 00:12
bon, ca marche toujours pas, j'ai toujours ce satané problème d'actionListener qui n'écoute que le dernier bouton crée.
voici une partie du code :
String connecte;
JButton mute;
...
while (liste.compareTo("") !=0
{
...
connecte = liste.substring(0, liste.indexOf( " ")));
mute = new JButton(connecte):
mute.setBounds(...);
mute.addActionListener(this);
connectes.add(mute); / / ajoute le bouton dans le cadre "connectes"
....
}
...
public void actionPerformed(actionEvent evt)
{
Object source = evt.getSource();
if (source = = un_bouton_quelconque)
tout_va_bien
if(source = = mute)
et là, il traite sytématiquement le dernier bouton crée
...
}
peut etre ai-je mal implémenté quand j'ai essayé avec le vector ou la table, mais mon problème restait le même.
Si seulement on pouvait donner des varaibles aux noms des boutons .....
x_O
Messages postés7Date d'inscriptionsamedi 23 avril 2005StatutMembreDernière intervention 7 mai 2005 4 mai 2005 à 12:07
et tu as bien raison d'utiliser un e.getActionCommand() : ca à l'air de marcher nettement mieux; je vais donc untiliser un mix :
actionListener pour mes boutons "classiques"
getActionCommand pour mes boutons "dynamiques"
Ceci dit, pour ma culture personnelle (et par curiosité aussi), j'aimerai bien comprendre pourquoi le addActionListener ne marche pas (est-ce du au fait que mes boutons dynamiques sont tous désignés par le même nom ?).