Bonjours tout le monde.
Est ce qu'il y a moyen de connaître le menu parent d'un menuItem avec swing.
Merci.
Version imprimable
Bonjours tout le monde.
Est ce qu'il y a moyen de connaître le menu parent d'un menuItem avec swing.
Merci.
au hasard
Code:
1
2 monItem.getParent() .....
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é.
Et ceci :[EDIT] ce code ne marche pas, voir plus bas.Code:
1
2
3
4
5 Component parent = monJMenuItem.getParent(); while(! (parent instanceof JMenu)) parent = parent.getParent(); JMenu menu = (JMenu)parent;
J'ai essayé mais ça n'a pas marché.
Voici la portion du code!
et l'erreur:Code:
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;
Code:
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]
je pense ce le seul parent dans ce cas est menuItemJpopup seulement.Code:
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)
Ton soucis c'est que tu n'as pas un JMenu mais un JPopupMenu
essaye ça
tu fais un
etCode:
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;
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.
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 ?
8O
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:
1
2
3 JPopupMenu popup = (JPopupMenu)monJMenuItem.getParent(); JMenu menu = (JMenu) popup.getInvoker();
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.
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.
Sayer. j'ai réussi enfin., Merci beucoup .