我知道如何通过单击鼠标左键从所选项目中获取项目。我可以使用TreeSelectionListener
。
tree.addTreeSelectionListener(new TreeSelectionListener(){
@Override
public void valueChanged(TreeSelectionEvent tse) {
DefaultMutableTreeNode node =
(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
}
});
但我需要用鼠标右键单击项目。显示与单击的项目相关的弹出菜单。我试过这个:
private void treeClicked(java.awt.event.MouseEvent evt) {
if(SwingUtilities.isRightMouseButton(evt)){
this.listRightClickMenu.show(this,evt.getX(),evt.getY());
DefaultMutableTreeNode node =
(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
}
}
但是如果用户用右键点击项目就会出现问题。右键单击不选择项目。如何按事件坐标选择项目或如何解决这个问题?主要我需要获取被点击的对象,如果可能的话,没有选择项目。
答案 0 :(得分:10)
使用此MouseListener:
MouseListener ml = new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(SwingUtilities.isRightMouseButton(e)){
int selRow = tree.getRowForLocation(e.getX(), e.getY());
TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
tree.setSelectionPath(selPath);
if (selRow>-1){
tree.setSelectionRow(selRow);
}
}
};
tree.addMouseListener(ml);