У меня есть экземпляр JMenuItem (скажем, TEMP). Я хочу выяснить, как называется JMenu, к которому добавляется TEMP. Как? - PullRequest
0 голосов
/ 09 мая 2011

У меня есть экземпляр JMenuItem (скажем, TEMP).Я хочу выяснить, как называется JMenu, к которому добавляется TEMP.Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Вы можете попробовать следующий код, чтобы получить JMenu с указанным JMenuItem

JPopupMenu fromParent = (JPopupMenu)menuitem.getParent();  
JMenu foo = (JMenu)fromParent.getInvoker();  
System.out.println(foo.getName());  
0 голосов
/ 15 апреля 2015

Вы можете получить имя JMenu от JMenuItem, используя этот подход:

JPopupMenu popup = new JPopupMenu();
popup.setName("popup");
JMenu jMenu= new JMenu("menu");
jMenu.setName("menu");
JMenuItem menuItem1 = new JMenuItem("sub1");
jMenu.add(menuItem1);
menuItem1.addActionListener(this);
popup.add(jMenu);

....

@Override
public void actionPerformed(ActionEvent e) {
    JMenuItem source = (JMenuItem)(e.getSource());
    try{
        JMenuItem menuItem = (JMenuItem) e.getSource(); 
        JPopupMenu popupMenu = (JPopupMenu) menuItem.getParent(); 
        Component invoker = popupMenu.getInvoker();  
        // Print name of JMenu
        System.out.println("NAME OF JMENU: "+invoker.getName());    
        JPopupMenu popup = (JPopupMenu) invoker.getParent();
        // Print name of JPopupMenu
        System.out.println("NAME OF POPMENU: "+popup.getName());
    }catch(Exception ex){
        ex.printStackTrace();
    }
}
...