目前有一个jTable内绑定JTree 
点右键弹出菜单时 第一次点击右键(就不弹出右键菜单)第二次点击右键的时候右键菜单才出来
程序中我弹出右键菜单的监听是加载到JTable中的private void treeTableAddListener() {
//给TreeTable添加监听事件
this.addMouseListener(new MouseAdapter() {
        public void mousePressed(MouseEvent e) {
        
            if (e.getModifiers() == InputEvent.BUTTON3_MASK) {
             JTable table = (JTable)e.getSource();
              // 取得右键点击所在行
              int   row   =   table.rowAtPoint(e.getPoint());   
              
                 if(row>=0)   
                     table.setRowSelectionInterval(row,row);   
Object node = tree.getSelectionPath().getLastPathComponent();
popup.removeAll(); 
              if(node.getClass().equals(InsuranceToolsDocument.class)){
               popup.add(addTypeItem);
              }else if(node.getClass().equals(InsuranceType.class)){
               popup.add(addTypeItem);
               popup.add(addVariesItem);
               popup.add(speparator);
               popup.add(delItem);
              }else{
               popup.add(delItem);               }
popup.show(e.getComponent(),e.getX(),e.getY());
            }
        }
});
}
请各位兄弟看看有什么问题。

解决方案 »

  1.   

     if(row>=0) 在MousePress的时候,还没有选中吧?在Press的时候,通过e.getX()/getY(),获取表格的行进行选中
      

  2.   

    我打断点在: if(row>=0)  结果:每一次右键的时候这里都能得到对应的row的值,
    并且和我选择的是相同的,说明此处获得了所选的行。换句话说,就算这里没有获得到值只要满足row>=0 
    右键菜单就应该出来的。初步怀疑是:jTree 的右键事件,和Jtable的事件之间有些冲突!
    可是找不出原因在哪里。