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 :

Connaitre le nom de l'objet à lorigine d'un evenement


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut Connaitre le nom de l'objet à lorigine d'un evenement
    Bonjour à tous,

    Lorsque que je fais un click droit sur sur la combobox 1, un popup nouvellecategorie s'ouvre. (voir image ci dessous)



    Puis lorsque je clique sur nouvelle catégorie sur le popup cela m'ouvre une nouvelle fenêtre pour créer une catégorie de niveau 1. (voir image ci dessous)



    Jusque là tout va bien.

    Mon problème est le suivant : lorsque je fais un click droit sur la combobox 2, le même popup nouvellecategorie s'ouvre. Cependant quand je clique sur nouvelle categorie dans le popup j'aimerai creer une categorie de niveau 2. (donc afficher "vous allez creer une categorie de niveau 2....et changer des elements dans la fenetre)

    Le code pour cela est le suivant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        
       System.out.println("test clik popup"+o);
    //Je passe en arguments le numero de categorie que je veux creer ici 1
       creationCategorie c = new creationCategorie(1);
       c.setVisible(true);
         
    }
    Mon problème est donc le suivant :je dois connaitre quel est le nom de la combobox qui a générer le clic sur nouvelle catégorie ainsi je pourrais passer le chiffre 1,2,3...

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    evt.getSource() te donne le composant sur lequel a été généré l'événement.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Si j'ai bien compris c'est ça que tu cherches


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public void actionPerformed(ActionEvent e) {
         e.getActionCommand()
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Merci pour vos réponses mais aucune des deux à l'air de résoudre mon probleme :

    J'ai remplace mon code par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
     
     
    String sp= evt.getActionCommand();
     
    Object o =evt.getSource();
    String s=o.toString();
     
    System.out.println("test clik popup "+o);
     
    System.out.println("test clik popup 2 "+sp);
     
       creationCategorie c = new creationCategorie(1);
       c.setVisible(true);
     
    }
    et j'obtiens dans la console :

    test clik popup javax.swing.JMenuItem[,1,3,129x21,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.metal.MetalBorders$MenuItemBorder@6f579a30,flags=264,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=2,bottom=2,right=2],paintBorder=true,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Nouvelle categorie]

    test clik popup 2 Nouvelle categorie
    Bref, rien qui me permet de déterminer si le clic sur nouvelle categorie venait de la combobox 1 ou 2.

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Bon ben je mache :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (evt.getSource() == combo1) {
        categorie = 1;
    } else if (evt.getSource() == combo2) {
        categorie = 2;
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 112
    Par défaut
    Merci pour ton aide cependant cela ne fonctionne toujours pas.
    En effet, quand je clique sur nouvelle categorie, il s'agit dun clic sur le popup (jMenuItem pour etre exact) donc je peux pas comparer ma jcombobox avec un jmenuitem.

    De plus le jmenuitem est commun quelque soit le clic droit ou il à été fait (dans la jcombox 1 ,2 ou 3).

    Je vois bien des solutions pour arriver a mes fins mais je les trouve peu efficaces :

    - faire une variable globale (ainsi sur un clic droit d'une combobox je rensegnerais un int global que que je consulterai lors du clic sur le jmenuitem (nouvelle catégorie)

    - ou redéfinir/surcharge la methode jPopupMenuCategorie.show(evt.getComponent(),
    evt.getX(), evt.getY());

    pour y envoyer un int en argument.

    Cette dernière solution me parait bien compliquée pour faire une chose si basique... De plus je sais pas comment faire..

    merci d'avance


  7. #7
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Il y a un moyen de remonter du JMenuItem à la combo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.swing.SwingUtilities.getAncestorOfClass(JComboBox.class, evt.getSource());
    Pour mémoire les composants Swing ont une méthode getParent() qui permet de remonter dans la hiérarchie des composants soit à la main, soit avec les méthodes utilitaires de Swing comme ci-dessus.

Discussions similaires

  1. affectation d'un objet sans connaitre le nom
    Par Space23 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 08/10/2011, 22h03
  2. comment connaitre le nom des objets dans un objet
    Par thierry007 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/09/2009, 14h50
  3. Connaitre le nom sous lequel on a instancié un objet.
    Par Pierre8r dans le forum Général Java
    Réponses: 9
    Dernier message: 29/02/2008, 20h09
  4. Réponses: 2
    Dernier message: 29/10/2003, 11h05
  5. Connaitre le nom des imprimantes
    Par bastien dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2002, 16h36

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