不要急,听我的.
直接的new JMenuItem("item1");是无法响应事件的.
如果你希望POPUPMENU中的项响应事件,你需要做几个COMPONENT,然后将这些作为POPUPMENU的ADD参数,如下例:
    private class RefreshAction extends AbstractAction{
        public RefreshAction(){
            super("刷新所选类别");
        }
        public void actionPerformed(ActionEvent e){
            showStatus("正在刷新所选类别... ...");
            reloadCategoryNode(selectedCategory);
            showStatus("所选类别已刷新");
        }
    }
bearerbox_menu.add(RefreshAction);
这样就可以了,试试

解决方案 »

  1.   

    谢谢salute大虾!!我是这么改的:
    public void init(){
    bearerbox_menu = new JPopupMenu();
    bearerbox_menu.add(new LinkAction(this,bbItem1,wdp_url));
    bearerbox_menu.add(new LinkAction(this,bbItem2,wdpLoad_url));
             .......
    }class LinkAction extends AbstractAction{
       JApplet myApplet;
       String link;
       
            public LinkAction(JApplet pt,String label,String urlStr){  
             super(label);
             myApplet = pt;    
             link = urlStr;
             System.out.println("####new LinkAction#############");
            }
            
            public void actionPerformed(ActionEvent e){            
            ...
        try {
         URL itemLink = new URL(link);
         myApplet.getAppletContext().showDocument(itemLink);
    System.out.println("this itemLink to : " + link);
        } catch (MalformedURLException urlException) {
         urlException.printStackTrace();
        } 
            }
    }可是为什么PopoupMenu增添MenuItem的机制这么奇怪呢??
    即为何不用 public JMenuItem add(JMenuItem menuItem)
    而用 public JMenuItem add(Action a)  机制**前者就是我原来的作法(我原先的提问中写漏了:
    PopupMenu bearerbox_menu = new PopupMenu();
    bearerbox_menu.add(bb_MenuItem[0]);
    bb_MenuItem[0].addActionListener(this);
    ...),但是菜单项的Listener死活就是添加不上去,而用**的机制就可以乐,好诡异阿,salute大虾可否解释一下?//bow另外你说的ADD参数又是什么意思阿?