Spe*_*505 4 java events swing jtree
我知道如何从鼠标左键单击所选项目中获取项目.我可以用TreeSelectionListener.
tree.addTreeSelectionListener(new TreeSelectionListener(){
@Override
public void valueChanged(TreeSelectionEvent tse) {
DefaultMutableTreeNode node =
(DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
}
});
Run Code Online (Sandbox Code Playgroud)
但我需要用鼠标右键单击项目.显示与单击的项目相关的弹出菜单.我试过这个:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果用户用右键单击项目就会出现问题.右键单击不选择项目.如何按事件坐标选择项目或如何解决这个问题?主要我需要获取被点击的对象,如果可能的话,没有选择项目.
Mai*_*kov 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);
Run Code Online (Sandbox Code Playgroud)