【问题标题】:Add 'expand' button to JTree node that has no children?向没有子节点的 JTree 节点添加“扩展”按钮?
【发布时间】:2011-01-29 04:20:41
【问题描述】:

我想在我的 JTree 节点上添加“展开”按钮,以表明它们是可展开的。问题是在用户点击它们之前,它们没有孩子(由于在后台进行处理)。

有什么方法可以将节点设置为父节点或有子节点而实际上没有子节点?

谢谢

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    可以使用您自己的DefaultMutableTreeNode 实现覆盖isLeaf()

    如果此节点没有子节点,则返回 true。

    Swing Tutorial: JTree4.1 动态树下解释。

    【讨论】:

    • 我知道这是一个老问题,但是在实施了这个工作正常的解决方案之后,我有一个问题:当扩展这种节点时,节点本身被选中,这不是默认行为其他“正常”节点。有什么提示吗?我应该创建一个新问题吗?
    【解决方案2】:

    使用 TreeWillExpandListener 有一个假的孩子/孩子计数并用真正的孩子替换它

    【讨论】:

    • 我需要使用你的建议来实现树节点的延迟加载。但是如果没有孩子,TreeWillExpandListener 不起作用。 “有一个假孩子/孩子人数”是什么意思?谢谢。
    • 在附加侦听器之前,向您希望延迟加载的每个节点添加一个已知的常量子节点。这将使节点看起来像它有孩子。在侦听器中,在节点扩展之前检查这个“假”节点是否仍然存在,如果存在则将其替换为真实节点。
    • 谢谢!我不确定此解决方案是否有效,因为 DefaultMutableTreeNode.add(MutableTreeNode newChild) 方法的文档说:“从其父节点中删除 newChild 并通过将其添加到该节点的子数组的末尾使其成为该节点的子节点。”。这意味着一个节点只能添加到一个父节点。
    • 我的意思是你必须添加节点,你肯定可以识别为“假”
    猜你喜欢
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-05
    • 2012-05-18
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多