Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我有一个JMenuItem的实例(比如说TEMP)。我想知道,添加了临时参数的JMenu的名称是什么。怎么用?_Java_Swing_Jmenu - Fatal编程技术网

Java 我有一个JMenuItem的实例(比如说TEMP)。我想知道,添加了临时参数的JMenu的名称是什么。怎么用?

Java 我有一个JMenuItem的实例(比如说TEMP)。我想知道,添加了临时参数的JMenu的名称是什么。怎么用?,java,swing,jmenu,Java,Swing,Jmenu,我有一个JMenuItem的实例(比如说TEMP)。我想知道,添加了临时参数的JMenu的名称是什么。我应该怎么做?您可以尝试以下代码来获取给定JMenuItem的JMenu JPopupMenu fromParent = (JPopupMenu)menuitem.getParent(); JMenu foo = (JMenu)fromParent.getInvoker(); System.out.println(foo.getName()); 您可以使用以下方法从JMenuIte

我有一个JMenuItem的实例(比如说TEMP)。我想知道,添加了临时参数的JMenu的名称是什么。我应该怎么做?

您可以尝试以下代码来获取给定JMenuItem的JMenu

JPopupMenu fromParent = (JPopupMenu)menuitem.getParent();  
JMenu foo = (JMenu)fromParent.getInvoker();  
System.out.println(foo.getName());  

您可以使用以下方法从JMenuItem获取JMenu的名称:

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);


你为什么想得到这些信息?难道你不知道你要将项添加到哪个菜单中吗?事实上,不知道。我有一个递归程序,它根据非常量文件系统将jmenuitems添加到jmenus,所以我的程序永远无法判断递归函数内部发生了什么。。。有什么想法吗Smaybe添加jmenuitem的每个实例及其到jmap的路径就可以了吗?jpopmpmenu是一个组件,您可以在TextEditor的线程“main”java.lang.NullPointerException中看到所有JMenuItemsException。TextEditor的GetParentOfJMenuItem(main.java:201)(main.java:122)在main.main(main.java:29)中看到所有JMenuItemsException编译器就是这么说的。JMenuItem redoChangesItem=new JMenuItem(“ცვლილებების აღდგენა"); JPopupMenu fromParent=(JPopupMenu)redoChangesItem.getParent();JMenu foo=(JMenu)fromParent.getInvoker();System.out.println(foo.getName());@Nika:难怪你会得到一个NPE-redoChangesItem还没有添加到任何菜单中,因此没有父菜单
@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();
    }
}