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 :

Evenement sur objet dynamique


Sujet :

AWT/Swing Java

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Evenement sur objet dynamique
    Salut,

    Dans mon interface swing je souhaite mettre des objets (des boutons par exemple) dynamiquement. C'est à dire que je ne sais pas par avance combien il va y en avoir combien d'objet je veux afficher.

    Jusqu'ici tout va bien, mais maitenent je sougaite mettre des évènements sur ces objets. Sachant que si on clic sur un de ces objets dynamique alors ca déclenche une action. Cette action étant différente pour chaque objet cliqué.

    Et là je bloque.

    Quelqu'un aurait-il une idée svp ?

    Merci.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 77
    Points
    77
    Par défaut
    salut,

    Comment crées-tu dynamiquement tes boutons ?

    A chaque création tu ajoutes un listener qui renvoye vers une méthode que tu as définit dans la meme classe. Un truc comme :

    button28.addActionListener(new ActionListener()
    {
    public void actionPerformed(ActionEvent e)
    {
    button28_actionPerformed();
    }
    });

    Un peu plus bas dans ta classe, tu as une methode
    public button28_actionPerformed() {//Action}.

    Autre possibilité, chacune de tes actions sont stockees dans d'autres classes, alors tu crees une nouvelle instance de cette classe ou tu y fais référence si elle a déjà été instantié.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    pour des raisons de perfs je pense qu'il serait préférable d'utiliser un seul listener plutot que d'en créer un par bouton ....
    La force Luc, la force...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 77
    Points
    77
    Par défaut
    Salut chaby,

    tu as des infos la-dessus ?

    Comment tu reconnais la source de l'event pour faire le traitement approprié ?

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    En général, les méthodes des listeners recoivent en paramètres un objet evenement.
    Cet objet hérite en général de EventObject qui possèdent une méthode getSource() qui renvoi la référence de l'objet qui à lancé l'evenement...

    a++

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par otsgd
    Salut chaby,

    tu as des infos la-dessus ?

    Comment tu reconnais la source de l'event pour faire le traitement approprié ?
    ben tu vas créer un objet Listener a chaque fois que tu créer ton bouton alors que ton bouton tu y ajoute lors de la creation a ton button un setActionCommand() avec comme parametre don identifiant, et ensuite dans un listener unique tu faire une méthode qui traite dynamiquement les nouveau nom.
    La force Luc, la force...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 77
    Points : 77
    Points
    77
    Par défaut
    merci pour ses précisions

    En fait, je voulais dire qu'avec une actionCommand tu vas devoir faire un truc du genre :
    if (action == "1") { //code1}
    else if (action == "2") {//code2}
    ....

    Bref, c'est pas propre et pas terrible, surtout si tout est dynamique (ie, tu dois dans ton cas avoir écris toutes les actions possibles)

    adiGuba, quand tu as récupéré la source de l'event, tu fais quoi pour savoir quelle action lancée ?

  8. #8
    Membre éprouvé
    Profil pro
    Développeur Back-End
    Inscrit en
    Avril 2003
    Messages
    782
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Avril 2003
    Messages : 782
    Points : 935
    Points
    935
    Par défaut
    Une question, qu'est ce qui est dynamique ?
    les boutons, ou les actions (en consirérant que le bouton est la repésentation et le déclancheur d'une action)

    tu peux donc aussi creer une liste d'Actions (voir classe javax.swing.AbstractAction) et puis creer soit des new JButton(Action), ou des JMenuItem(Action) et voir même des JToggleButton(Action)

  9. #9
    Membre à l'essai
    Inscrit en
    Novembre 2003
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    je me suis peut être mal exprimé quand à mon problème initial.

    Ce que je veux faire c'est positionner n bouton sur ma fenêtre avec n inconnu (il variera suivant le déroullement de l'appli)

    Dans mon code j'ai ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        JButton[] tableau = new JButton[size];
        for (int i=0; i < size; i++) {
          tableau[i] = new JButton("truc");
           this.getContentPane().add(tableau[i]);
           ((JButton)tableau[i]).setVisible(true);
        }
    Donc j'ai donc un tableau de JButton, chacun des JButton ont été affiché sur la fenetre.

    Maintenant je veux mettre une action sur ces boutons, une action différente.


    Mais c'est bon j'ai trouvé maitenant lol
    Il suffit en fait dans la boulce for de créer un listener qui prend en paramètre l'indice du tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tableau[i].addActionListener(new Test_tableau_actionAdapter(this, i));
    et dans la listener on appeler une action différente suivant la valeur de i !

    ça a l'air de marcher impect

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

Discussions similaires

  1. Evenements sur contrôles dynamiques
    Par BATCHOS CON TEQUILA dans le forum ASP.NET
    Réponses: 5
    Dernier message: 23/01/2009, 14h03
  2. Evenèment sur controles dynamiques
    Par maleo833 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2007, 17h31
  3. Utiliser une CssClass sur objet dynamique
    Par starkson dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/07/2007, 09h54
  4. [IE vs FF] getElementsByName sur objet dynamique
    Par TSalm dans le forum Général JavaScript
    Réponses: 29
    Dernier message: 01/03/2007, 18h48
  5. [VB.Net] l'utilisation des Evenements sur Objet
    Par vijeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 06/03/2006, 12h44

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