【问题标题】:Expand multiple JTree nodes when user expands a node用户展开节点时展开多个 JTree 节点
【发布时间】:2014-04-13 01:53:00
【问题描述】:

我在 Swing 面板中显示了一个大型 JTree。我已经实现了一些从 DefaultMutableNode 扩展而来的节点,它们动态计算它们的子节点,并且一切运行良好。

在某些情况下(具体来说,当展开的节点只有一个子节点时),我希望 JTree 在使用单击展开元素时展开多个节点(只要只有一个子节点,就递归展开子节点,也许有一定的限制。

例如,如果我有以下树:

A
 - B
   - B2
     - B3
       - B4a
       - B4b
 - C
 - D

并且用户点击展开B节点,我希望B B2和B3节点立即展开。

【问题讨论】:

    标签: java swing jtree


    【解决方案1】:

    JTree

    public void addTreeWillExpandListener(TreeWillExpandListener tel)
    

    所以你应该实现接口

    public interface TreeWillExpandListener extends EventListener {
        /**
         * Invoked whenever a node in the tree is about to be expanded.
         */
        public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException;
    
        /**
         * Invoked whenever a node in the tree is about to be collapsed.
         */
        public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException;
    }
    

    treeWillExpand中检查TreePath是否有事件。如果路径中的最后一个 Node 只有一个孩子,则展开它。

    【讨论】:

    • 我怎样才能从监听器中扩展它呢?我能做的就是“否决”扩张?
    • JTree 有 public void expandPath(TreePath path) 方法。在 treeWillExpand 中找出要扩展的 TreePath 并在 SwingUtilities.invokeLater() 中调用 expandPath 包装
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 2011-03-06
    • 2013-02-28
    • 2012-07-03
    相关资源
    最近更新 更多