目前有一个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());
}
}
});
}
请各位兄弟看看有什么问题。
点右键弹出菜单时 第一次点击右键(就不弹出右键菜单)第二次点击右键的时候右键菜单才出来
程序中我弹出右键菜单的监听是加载到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());
}
}
});
}
请各位兄弟看看有什么问题。
并且和我选择的是相同的,说明此处获得了所选的行。换句话说,就算这里没有获得到值只要满足row>=0
右键菜单就应该出来的。初步怀疑是:jTree 的右键事件,和Jtable的事件之间有些冲突!
可是找不出原因在哪里。