java - 如何通过单击编辑 JTree 节点

标签 java swing jtree

我有一个 JTree,并且希望在单击节点时调用其 getTreeCellEditorComponent() 方法。根据 DefaultTreeCellEditor 类(我扩展的)的文档,“编辑是通过三次鼠标单击开始的,或者在单击、暂停、单击和 1200 毫秒的延迟后开始的。”是否有某种方法可以覆盖此行为,以便单击即可启动编辑过程?

最佳答案

JTree API 推荐使用 MouseListener,但按键绑定(bind)也很方便。此示例调用 startEditingAtPath() 并绑定(bind)到 Enter 键:

final JTree tree = new JTree();
tree.setEditable(true);
MouseListener ml = new MouseAdapter() {
    @Override
    public void mousePressed(MouseEvent e) {
        int row = tree.getRowForLocation(e.getX(), e.getY());
        TreePath path = tree.getPathForLocation(e.getX(), e.getY());
        if (row != -1) {
            if (e.getClickCount() == 1) {
                tree.startEditingAtPath(path);
            }
        }
    }
};
tree.addMouseListener(ml);
tree.getInputMap().put(
    KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "startEditing");

附录:另请参阅此 answer关于可用性。

关于java - 如何通过单击编辑 JTree 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625424/

相关文章:

java - 插入排序——交换节点

java - 如何告诉 ProGuard 混淆方法和类名?

java - 子类 catch block 会捕获已检查的父异常吗?

java - 从 JPanel 附加到 Window 事件

java - 如何根据击键更改图像

java JTree 不更新

java - JTree 节点和 JPanel 之间没有连接

java - Selenium 测试用例从主菜单中选择子菜单

java - 使用 swing 包的简单 java 表单需要日历中的指导吗?

java - 简单快速的 JTree 单元格编辑器