Gestion dynamique de JButton

Résolu
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 7 mai 2005 - 23 avril 2005 à 12:44
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Derniè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)

D'avance merci

10 réponses

cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
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 ....

Enfin je vois pas trop là ... ++ ;)


##########################
# Alphaspawnrider@Yohann
# alphaspawnrider@hotmail.com
##########################
3
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
25 avril 2005 à 00:43
Salut x_O,

Quand tu boucle pour remplir ton vector de JButon fais avant un :

setActionCommand('tonString');

Afin d'associer un nom de command a ton bouton (different pour chaque bouton)



Afin par la suite dans ta methode actionPerformed(ActionEvent e) de
pouvoir différencier le bouton de la maniere suivante (v etant ton
Vector) :



if ((JButon)v.getElement(1)).getActionCommand().equals('tonString') Then

blabla ...



Jespere que tu as compris ce que j'ai dit... sinon repost un message ...



Voili voulou !

Bonne chance ! ;o)


##########################
# Alphaspawnrider@Yohann
# alphaspawnrider@hotmail.com
##########################
0
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Derniè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

Merci quand même pour ce début d'aide :-D
0
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
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é !

Ca peut fonctionner...

Voili voulou +++ ;)

##########################
# Alphaspawnrider@Yohann
# alphaspawnrider@hotmail.com
##########################
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Derniè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 !)
0
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
29 avril 2005 à 09:25
Fais une Hashtable ou assimilé avec comme clef le nom d'utilisateur et comme valeur le bouton !
Bcp plus pratique je pense....

##########################
# Alphaspawnrider@Yohann
# alphaspawnrider@hotmail.com
##########################
0
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Dernière intervention 7 mai 2005
30 avril 2005 à 13:27
ok, je me documente là dessus et j'essaye d'en faire une.
0
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Derniè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 .....
0
x_O Messages postés 7 Date d'inscription samedi 23 avril 2005 Statut Membre Derniè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 ?).

Quoi qu'il en soit : un grand MERCI
, spawn
0
cs_Spawnrider Messages postés 254 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 9 avril 2007 1
5 mai 2005 à 13:18
Re, Merci beaucoup

Oui bien sur si tes boutons ont le meme nom le getSource se refere au nom du bouton .. .

Enfin voilà ca fonctionne et j'en suis trés content pour toa...;



Voili voulou ++++

##########################
# Alphaspawnrider@Yohann
# alphaspawnrider@hotmail.com
##########################
0
Rejoignez-nous