swing - 触发树单元格编辑事件
Posted
技术标签:
【中文标题】swing - 触发树单元格编辑事件【英文标题】:swing - Triggering Tree Cell Edit Event 【发布时间】:2012-12-20 12:51:22 【问题描述】:我有一个带有可编辑节点的 JTree。
如何以编程方式触发树单元格编辑事件,即调出节点重命名文本框来代替突出显示的节点,就像用户手动突出显示它并按下 F2 一样?
基本上,我想添加一个“重命名”菜单项或工具栏按钮,以提示用户了解树的特定功能,并且我希望它在用户突出显示节点时与 F2 键功能相同。
【问题讨论】:
【参考方案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?。
【讨论】:
感谢您的回复,但这并不是我真正要问的。诚然,我不是很清楚。没关系,现在已经回答了。 :) 如果我不想显示整个路径以进行重命名,我只需要显示叶子节点的名称以上是关于swing - 触发树单元格编辑事件的主要内容,如果未能解决你的问题,请参考以下文章
Java Swing 获取table 单元格,设置该单元格为可编辑