有这样一段代码:
JPopupMenu pop = new JPopupMenu(); 
JMenu menu = new JMenu("memu"); 
JMenuItem item = new JMenuItem("item"); 
pop.setName("pop"); 
menu.add(item); 
pop.add(menu); 当item被点击时: 
JMenuItem item = (JMenuItem) evt.getSource(); 
JPopupMenu pop2= (JPopupMenu) item.getParent(); 
System.out.println("popName: "+pop2.getName()); 输出结果: 
popName: null 有什么办法可以通过JMenuItem 获得JPopupMenu 的name?

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【xunshu】截止到2008-07-03 11:23:34的历史汇总数据(不包括此帖):
    发帖的总数量:13                       发帖的总分数:290                      
    结贴的总数量:8                        结贴的总分数:250                      
    无满意结贴数:1                        无满意结贴分:90                       
    未结的帖子数:5                        未结的总分数:40                       
    结贴的百分比:61.54 %               结分的百分比:86.21 %                  
    无满意结贴率:12.50 %               无满意结分率:36.00 %                  
    楼主加油
      

  2.   

    JPopupMenu pop2= (JPopupMenu)(item.getParent().getParent()); 
      

  3.   

    item.getParent().getParent()返回值时null
    如果执行System.out.println(item.getParent());输出:
    javax.swing.JPopupMenu[,0,0,55x62,layout=javax.swing.plaf.basic.DefaultMenuLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.metal.MetalBorders$PopupMenuBorder@922804,flags=264,maximumSize=,minimumSize=,preferredSize=,desiredLocationX=140,desiredLocationY=371,label=,lightWeightPopupEnabled=true,margin=,paintBorder=true]
      

  4.   

    JPopupMenu没有getText()、setText()方法如果执行:
    boolean f = pop2 == pop;
    System.out.println(f); 
    输出结果是false,它们根本不是同一个对象
      

  5.   

    JPopupMenu里面是getLabel();他可以得到那个名字的。JMenuItem 是getText()就可以了
      

  6.   

    第一部分建议增加一行
    item.setComponentPopupMenu(popupMenu);点击时的第二行改为
    JPopupMenu pop2 = item.getComponentPopupMenu();
      

  7.   

    item.getParent().getComponentPopupMenu();