本帖最后由 al2o3_1124 于 2011-05-03 19:58:06 编辑

解决方案 »

  1.   

    谢谢!
    代码很长,但问题应该就出现在这部分,groupTree是一个JTree,只有一个根节点,4个子节点,我给先JTree加了个MouseListener
    groupTree.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent evt) {
       selTreeRow = groupTree.getRowForLocation(evt.getX(), evt.getY());//获取点击的节点
    if (selTreeRow > 0) { //Row>0说明点的是子节点
       if (evt.getButton() == MouseEvent.BUTTON3) { //如果点击右键
                       //使JPoppuMenu出现在点击位置
    groupMenu.show(evt.getComponent(), evt.getX(),evt.getY());
    //以下add,delete,modify是我加在groupMenu上的JMenuItem
    add.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
    System.out.println("Add Clicked!"); }
    });

    delete.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
    System.out.println("Delete Clicked!");
     }
    });
            modify.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
    System.out.println("Modify Clicked!");
       }
            });
    } else { //如果点击的不是右键,即点左键,会对旁边的JTable进行如下操作
      List<User> users = groups.get(selTreeRow - 1).getUsers();
      table.setModel(getTableContent(users));
      table.updateUI();
    }
       }
      }
    });怎么样?LS觉得跟我加在JTree上的listener有关吗?
      

  2.   

    可以写在一个addActionListener里面的~
      

  3.   

    你把添加addActionListener放到了mouseClicked里,当然是每点一次都添加了一遍Listener了,你应该在界面初始化时生成好菜单并添加好监听,点击鼠标时只需要把菜单显示出来
      

  4.   

    7L正解
    在编GUI时,最好把所有组件的初始化放到构造器中