用户展开节点时展开多个JTree节点

时间:2014-03-10 04:26:05

标签: java swing jtree

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

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

例如,如果我有以下树:

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

并且用户单击以展开B节点,我想要B B2,并立即扩展B3节点。

1 个答案:

答案 0 :(得分:3)

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只有一个孩子展开它。