Tree
Tree 组件将数据组织为节点的层次结构。每个节点持有一个唯一的键和标签。节点连接形成父子关系。您可以展开或折叠节点,以显示或隐藏其子节点。图标有助于明确您正在查看的节点类型以及其是否被选中。选择支持一次选择一个节点或多个节点。
节点模型和树结构
TreeNode 的角色
树中的每个数据项都被封装在一个 TreeNode 中。这个对象包含键、文本标签,并链接到其父节点和子节点。根节点是特别的:它存在于每个树中但不可见。它作为所有顶级节点的容器,使树结构在内部更易于管理。
因为节点保持对其父节点和子节点的引用,所以遍历树是直接的。无论您想向上、向下移动,还是按键查找特定节点,连接始终可用。
节点创建和管理
节点是通过简单的工厂方法创建的,可以提供键和文本,或者仅提供文本(其本身也作为键)。这确保每个节点是有效且唯一可识别的。
将节点添加到树中涉及在父节点上调用 add() 或 insert()。这些方法处理分配父引用并通知树 更新其用户界面。
示例:
TreeNode parent = Tree.node("Parent");
TreeNode child = Tree.node("Child");
parent.add(child);
tree.add(parent);
尝试将同一节点分配给多个父节点将导致抛出异常。这种保护措施确保树保持适当的层次结构,防止节点拥有多个父节点,这会破坏结构的完整性并导致意外行为。
显示代码
- Java
修改节点
您可以通过调用 setText(String text) 来更新节点的标签。这个方法更改树中显示的节点文本。
要移除特定子节点,使用 remove(TreeNode child)。这将子节点与其父节点分离,并将其从树结构中移除。它还会清除父引用。
如果您想清除节点的所有子节点,可以调用 removeAll()。这将移除每个子节点,清除它们的父引用,并清空子节点列表。
每个节点支持使用 setUserData(Object key, Object data) 在服务器端存储额外信息。这允许您与节点关联任意元数据或引用,而无需将这些数据暴露给客户端或用户界面。
在演示中,双击一个节点以打开其文本的编辑器。输入新文本并保存以更新树中节点的标签。
显示代码
- Java
图标
图标提供了有关节点代表的内容和其状态的视觉线索。它们通过一目了然地区分节点类型和选择状态,提高了可读性。Tree 组件支持全球设置默认图标,为节点自定义图标,并切换图标可见性。
全局图标
树允许您为折叠组、展开组、叶子节点和选定叶子设置默认图标。
示例:
tree.setCollapsedIcon(TablerIcon.create("folder"));
tree.setExpandedIcon(TablerIcon.create("folder-opened"));
tree.setLeafIcon(TablerIcon.create("file"));
tree.setLeafSelectedIcon(TablerIcon.create("file-checked"));