IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

Reconnaître boutton (JButton) dynamique


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut Reconnaître boutton (JButton) dynamique
    Bonsoir tout le monde,

    J'ai créé un application qui affiche certaines données (en l'occurrence des pseudos ), pour chaque pseudo j'affiche un bouton a côté afin de pouvoir traiter chaque profil. Comme le nombre de profils changent, j'aurais à chaque fois un nombre de boutons différents.

    Tout mes boutons possèdent le même "ActionListener", mais je ne vois pas comment faire pour différencier mes boutons dynamiques.

    Si quelqu'un a une idée, qu'il ne se gêne pas ;-)

    Merci d'avance,


    Bonne soirée

  2. #2
    Membre Expert
    Avatar de slim_java
    Homme Profil pro
    Enseignant
    Inscrit en
    Septembre 2008
    Messages
    2 272
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2008
    Messages : 2 272
    Par défaut
    si j'ai bien compris, tu peux créer une classe pour tes bouton qui hérite de JButton et tu ajoute un attribut pour identifier chaque bouton.

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    c'est à ça que sert le "actionCommand" du bouton, à distinguer, dans le listener, les différentes actions possible. Voir donc la méthode setActionCommand sur le bouton et getActionCommand sur le event.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut
    Bonjour,

    Merci pour vos réponses.


    @slim_java : Pas tout à fait, si tu veux j'ai une classe qui hérite de JPanel et elle est composée d'un label et d'un boutton, ça ressemble à ça :

    ------------------------------
    ----------------
    Pseudo | bouton voir |
    ----------------
    ------------------------------

    Cette structure est donc répétée autant de fois qu'il y aura des personnes à afficher. Mon problème est de savoir sur quel bouton l'utilisateur a clické.

    @tchize_ : J'avais penser à cette solution (utiliser les actionCommand), le truc c'est que je vois pas comment identifier les boutons depuis ma classe qui les écoute.
    Je arrive à faire un setCommand à la création de mes objets, mais comme je ne sais pas combien d'objets j'aurais, je ne peux pas préparer à l'avance tout mes tests dans la méthode "actionPerformed" de l'écouteur.

    Ma méthode "actionPerformed" ressemble à cela :

    if (e.getSource.equals(...)) // Cas généraux
    traitement 1;
    else if (e.getSource.equals(...))
    traitement 2;
    ...
    // Cas des boutons dynamiques
    else if(e.getActionCommand().equals(unString)
    traitement X;
    else if(e.getActionCommand().equals(unDeuxiemeString)
    traitement Y;
    ...
    else if(e.getActionCommand().equals(unNiemeString)
    traitement N;
    ...

    Peut être que ma manière de procéder n'est pas correcte, je ne sais pas. Mais comme vous pouvez le voir c'est cas Nieme cas que m'embête car je ne peux pas deviner s'il sera là ou pas.



    Merci par avance et bonne journée

  5. #5
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    919
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 919
    Par défaut
    Tes profils n'ont pas un id, une clé unique ?
    Si une clé unique est le pseudo, alors chaque bouton aurait comme ActionCommand le nom du pseudo.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JButton button=new JButton("Traiter");
    button.setActionCommand(profile.pseudo);
    Et dans ton actionPeformed() tu aurais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void actionPeformed(ActionEvent event) { 
      Profile prof=profilehash.get(event.getActionCommand());
      prof.traiter();
      }
    Rem: je suppose que tu as stocké tes profiles dans une hash, mais tout autre moyen de retrouver un profile sur base du pseudo marche.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 41
    Par défaut
    J'ai résolu mon problème, merci à vous d'avoir répondu à ma question. Vos réponses m'ont mis dans le droit chemin, après j'ai fais quelque modification afin que cela corresponde à mes besoins.

    En faite, lors ce que je crée mes boutons je fais ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     btn.setActionCommand ("aprecuProfile" + username)
    et dans le actionPerformed(ActionEvent e) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     		else if(e.getActionCommand().contains("apercuProfile"))
    		{
    			utilisateur = trouver(e.getActionCommand().subSequence(13, e.getActionCommand().length()).toString());
    			if(utilisateur != null)
    			{
    				traitement;
    			}
    		}
    Merci encore une fois,

    Bon week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modifier image JButton Dynamiquement
    Par SebastianPx dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 05/02/2009, 12h06
  2. [JButton] boutton pour ajouter un composant
    Par ____22 dans le forum Composants
    Réponses: 13
    Dernier message: 15/08/2008, 19h50
  3. Réponses: 1
    Dernier message: 06/05/2008, 10h02
  4. JButtons / Listeners : Dynamiques
    Par Darkdaemons dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 23/04/2007, 18h16
  5. Création dynamique de bouttons:comment passer un parametre ?
    Par monstroplante dans le forum Langage
    Réponses: 2
    Dernier message: 07/11/2005, 22h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo