【问题标题】:swing - Triggering Tree Cell Edit Eventswing - 触发树单元格编辑事件
【发布时间】:2012-12-20 12:51:22
【问题描述】:

我有一个带有可编辑节点的 JTree。

如何以编程方式触发树单元格编辑事件,即调出节点重命名文本框来代替突出显示的节点,就像用户手动突出显示它并按下 F2 一样?

基本上,我想添加一个“重命名”菜单项或工具栏按钮,以提示用户了解树的特定功能,并且我希望它在用户突出显示节点时与 F2 键功能相同。

【问题讨论】:

    标签: java swing editor rename jtree


    【解决方案1】:

    1) 选择某个节点(通过Mouse / KeyBoard 事件)并通过TreeSelectionListener 侦听,然后选择的路径具有唯一 ID

    2)将Swing Action添加到JMenuItem(在JPopup???,从您的问题中不清楚,如何从/到获取节点???)

    3) 创建类、虚空等并触发

    SwingUtilities.invokeLater(new Runnable() {  
        public void run() {  
            tree.startEditingAtPath(path);  
        }  
    });
    

    4) 基于@Michael Dunn 对我的question on another forum 的回答

    【讨论】:

    • 3 做到了。这就是我一直在寻找的;不知何故,在浏览了 javadoc 之后我找不到它。 -_- 非常感谢。
    【解决方案2】:

    看到这个tutorial

    为了使树节点中的文本可编辑,我们调用 树上的 setEditable(true)。当用户完成编辑 节点,模型生成一个树模型事件,告诉任何侦听器 - 包括 JTree - 树节点已更改。注意 虽然 DefaultMutableTreeNode 具有更改节点的方法 内容,更改应通过 DefaultTreeModel 覆盖方法。 否则,不会生成树模型事件,并且监听器 比如树不会知道更新。

    编辑:

    要为节点添加上下文菜单,请参阅此问题:Right-click context menu for Java JTree?

    【讨论】:

    • 感谢您的回复,但这并不是我真正要问的。诚然,我不是很清楚。没关系,现在已经回答了。 :)
    • 如果我不想显示整个路径以进行重命名,我只需要显示叶子节点的名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2016-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多