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 :

Comment savoir le menu parent d'un menuItem?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut Comment savoir le menu parent d'un menuItem?
    Bonjours tout le monde.

    Est ce qu'il y a moyen de connaître le menu parent d'un menuItem avec swing.

    Merci.

  2. #2
    Membre éclairé Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Par défaut
    au hasard

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monItem.getParent() .....

  3. #3
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut
    merci, mais getParent() retourne un Container, et il me sort un problème de casting avec la classe Jmenu.

    Mon but pour ceci est de colorer différement le menu (celui de la barre de menu) parent du menuItem que j'ai selectionné.

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Et ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Component parent = monJMenuItem.getParent();
    while(! (parent instanceof JMenu))
      parent = parent.getParent();
     
    JMenu menu = (JMenu)parent;
    [EDIT] ce code ne marche pas, voir plus bas.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut
    J'ai essayé mais ça n'a pas marché.
    Voici la portion du code!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    JMenuItem source = (JMenuItem) (e.getSource());
     
          Component parent = source.getParent();
          while(! (parent instanceof JMenu)){
        	  System.out.println("parent="+parent.toString());
            parent = parent.getParent();
     
          }
     
          JMenu menu = (JMenu)parent;
    et l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    parent=javax.swing.JPopupMenu[,0,0,123x51,layout=javax.swing.plaf.basic.DefaultMenuLayout,alignmentX=0.0,alignmentY=0.0,
    border=javax.swing.plaf.metal.MetalBorders$PopupMenuBorder@f7f540,flags=264,maximumSize=,minimumSize=,preferredSize=,desiredLocationX=517,desiredLocationY=99,label=,lightWeightPopupEnabled=true,margin=,paintBorder=true]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
    	at pb.menu.FormMenu.actionPerformed(FormMenu.java:280)
    	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    je pense ce le seul parent dans ce cas est menuItemJpopup seulement.

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    Ton soucis c'est que tu n'as pas un JMenu mais un JPopupMenu


    essaye ça


    tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     Component parent = source.getParent();
    while(! (parent instanceof JPopupMenu)){
    System.out.println("parent="+parent.toString());
    parent = parent.getParent();
     
    }
     
    JPopupMenu menuPopup = (JPopupMenu)parent;
    et

  7. #7
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut
    Mais le problème c'est que j'ai jamais travaillé avec JPopupMenu et je n'ai rien à en faire.

    Moi je voudrais just quand je click sur un menuItem, je puisse récupérer le menu contenant ce menuItem.

  8. #8
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 137
    Par défaut
    oui mais apparemment dans tes taces il te remonte un JPopupMenu !!


    Es tu sur d'avoir créé un JMenu ??

    Pourrais tu poster ton code qu'on puisse y jeter un oeil ?


  9. #9
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Autant pour moi, j'ai pas fait gaffe et je me suis trompé.
    Le JMenu n'est pas le parent du JPopupMenu, mais son invoker.
    Pour accéder au JMenu, il faut faire (à tester, quand meme):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    JPopupMenu popup = (JPopupMenu)monJMenuItem.getParent();
     
    JMenu menu = (JMenu) popup.getInvoker();
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  10. #10
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut
    Je suis sur que je n'ai pas utilisé JPopMenu.

    Voici un Portion du Code, j'ai travaillé avec la méthode traditionnelle;


    JMenu menu=new JMenu("");
    JMenu submenu=new JMenu("");
    JMenuItem menuItem;
    menuBar = new JMenuBar();

    //this is a first level menu
    if (index.intValue() == 0) {
    menu = MenuInfo.createMenu(i);
    menuBar.add(menu);

    }


    }
    //this is a submenu
    if (index.intValue() == -1) {
    submenu = MenuInfo.createMenu(i);
    menu.add(submenu);
    }
    //this is second level menu
    if (index.intValue() == 1) {
    menuItem = MenuInfo.createMenuItem(i);
    menu.add(menuItem);

    }


    //this is a third level menu
    if(index.intValue()==2){
    menuItem = MenuInfo.createMenuItem(i);
    submenu.add(menuItem);

    }

    }


    Pour JMenu menu = (JMenu) popup.getInvoker();
    ça à marché mais seulement pour level 1.

  11. #11
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Un JMenu utilise automatiquement un JPopupMenu. Lorsque tu ajoutes des JMenuItem à un JMenu, il les ajoute en fait à son JPopupMenu.

    Si tu veux revenir plusieurs niveaux en arrière, il faut boucler sur le code que je t'ai donné plus haut.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  12. #12
    Membre averti
    Inscrit en
    Février 2005
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 26
    Par défaut
    Sayer. j'ai réussi enfin., Merci beucoup .

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/04/2008, 11h08
  2. Réponses: 6
    Dernier message: 19/12/2006, 17h16
  3. [vb2005] Comment connaitre le menu d'appel parent ?
    Par zzzmoi dans le forum Windows Forms
    Réponses: 4
    Dernier message: 19/07/2006, 14h17
  4. [MFC]Comment savoir si un menu est cliqué?
    Par alex75 dans le forum MFC
    Réponses: 7
    Dernier message: 02/05/2006, 15h11
  5. comment savoir quel menu est en surbrillance?
    Par LRobi dans le forum MFC
    Réponses: 2
    Dernier message: 27/01/2005, 09h04

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