如何双击JTree节点并获取其名称?

如果我调用evt.getSource(),则似乎返回的对象是JTree。我无法将其强制转换为DefaultMutableTreeNode。

最佳答案

Java Docs


final JTree tree = ...;

MouseListener ml = new MouseAdapter() {
    public void mousePressed(MouseEvent e) {
        int selRow = tree.getRowForLocation(e.getX(), e.getY());
        TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
        if(selRow != -1) {
            if(e.getClickCount() == 1) {
                mySingleClick(selRow, selPath);
            }
            else if(e.getClickCount() == 2) {
                myDoubleClick(selRow, selPath);
            }
        }
    }
};
tree.addMouseListener(ml);

要从TreePath获取节点,可以走路径,或者简单地使用 TreePath#getLastPathComponent

这将返回Object,因此您将需要自己强制转换回所需的节点类型。

07-27 18:03