java DefaultMutableTreeNode   树形结构

目录

1. Tree的概念 1

1.1. treeNode接口,mutabletreenode接口 1

1.2. 10-4:以TreeModel构造JTree. 1

2. 功能要求 2

2.1. 树形结构节点的查找与定位 2

3. 节点: DefaultMutableTreeNode 2

3.1. 3. 路径: TreePath 5

  1. Tree的概念

树。将分层数据显示为树状轮廓的组件。

一颗树由若干节点,通过层级关系组成,一个节点由TreeNode实例来表示,节点在树中的位置(路径)由TreePath实例来表示(定位)。

创建树时,首先要创建一个根节点,然后创建第二层节点添加到根节点,继续创建节点添加到其父节点,最终形成由根节点所引领的一棵树,再由 JTree 数组件显示出来。所有拥有子节点的节点可以自由展开或折叠子节点。

TreeNode 是一个接口,创建节点对象时,通常使用已实现该接口的的 DefaultMutableTreeNode 类。

  1. treeNode接口,mutabletreenode接口
  1. 10-4:以TreeModel构造JTree.

除了以节点的观念(TreeNode)建立树之外,你可以用data model的模式建立树。树的data model称为TreeModel,用此模式的好处 是可以触发相关的树事件,来处理树可能产生的一些变动。

  1. 功能要求
  1. 树形结构节点的查找与定位
  1. 节点: DefaultMutableTreeNode

DefaultMutableTreeNode表示一个节点,拥有对节点增删改查等操作的丰富方法。DefaultMutableTreeNode 实现了 MutableTreeNode 接口,而 MutableTreeNode 接口继承自 TreeNode 接口。

---------------------

DefaultMutableTreeNode 常用方法:

// 按广度优先的顺序遍历以此节点为根的子树(包含此节点下的所有节点)

Enumeration breadthFirstEnumeration();

// 按深度优先的顺序遍历以此节点为根的子树(包含此节点下的所有节点)

Enumeration depthFirstEnumeration();

DefaultMutableTreeNode 常用方法:

// 添加一个子节点在末尾

void add(MutableTreeNode newChild);

// 在指定位置插入一个子节点

void insert(MutableTreeNode newChild, int childIndex)

// 移除子节点

void remove(int childIndex);

void remove(MutableTreeNode aChild);

void removeAllChildren();

// 获取子节点数量

int getChildCount();

// 获取叶子节点的数量

int getLeafCount();

// 获取指定索引位置的子节点

TreeNode getChildAt(int index);

// 获取指定子节点之后的子节点

TreeNode getChildAfter(TreeNode aChild);

// 获取指定子节点之前的子节点

TreeNode getChildBefore(TreeNode aChild);

// 判断某节点是否为此节点的子节点

boolean isNodeChild(TreeNode aNode);

// 获取此节点的父节点,没有父节点则返回 null

TreeNode getParent();

// 判断此节点是否为根节点

boolean isRoot();

// 判断是否为叶节点(没有子节点即为叶节点,则返回 true)

boolean isLeaf();

// 返回此节点上的级数,从根到此节点的距离。如果此节点为根,则返回 0。

int getLevel();

// 返回从根到此节点的路径。该路径中第一个元素是根节点,最后一个元素是此节点。

TreeNode[] getPath();

// 遍历子节点(只包括直接子节点,不包括孙节点)

Enumeration children();

// 按广度优先的顺序遍历以此节点为根的子树(包含此节点下的所有节点)

Enumeration breadthFirstEnumeration();

// 按深度优先的顺序遍历以此节点为根的子树(包含此节点下的所有节点)

Enumeration depthFirstEnumeration();

// 设置节点的用户对象(节点显示的名称)

void setUserObject(Object userObject);

// 获取节点的用户对象(节点显示的名称)

Object getUserObject();

---------------------

  1. 3. 路径: TreePath

TreePath表示某节点的路径(从根节点到此节点),一般使用方式:

// 一个节点

DefaultMutableTreeNode node = ...;

// 获取节点的路径(从根节点到此节点沿路径的所有节点集)

TreeNode[] pathNodes = node.getPath();

// 使用节点路径集创建树路径

TreePath treePath = new TreePath(pathNodes);

/*

* 这里得到的 treePath 表示的是树中的一个路径,可以定位到具体的节点,

* 从而对该节点进行相关操作(展开/折叠子节点等),详见后面 JTree 的介绍。

*/

/* 树路径的其他常用方法 */

// 获取此树路径上的所有节点,返回数组的元素为节点对象

Object[] paths = treePath.getPath();

// 获取此树路径上的节点数量

int nodeCount = treePath.getPathCount();

// 获取此树路径表示的节点的父节点的树路径

TreePath parentPath = treePath.getParentPath();

// 判断指定树路径是否为此树路径的“子孙”树路径

boolean isDescendant = treePath.isDescendant(TreePath aTreePath);

---------------------

(树) - 谢潭生的博客 - CSDN博客.html

java DefaultMutableTreeNode 树形结构 目录 1. Tree的概念 1 1.1. treeNode接口,mutabletreenode接口 1 1.2. 10-4:以T相关推荐

  1. idea-图标工具栏(启动类,推拉,maven)界面消失-树形结构目录-定位图标消失

    前言 有时候拉新项目覆盖了本地配置,或者启动项目不小心点到其他位置,导致idea界面和自己之前不一样,故记录下来解决方法. 一.树形结构目录怎么调整? 显示树形目录步骤:1.左上角在项目project ...

  2. 数据库树形结构,EasyUI Tree 树

    通过 $.fn.tree.defaults 重写默认的 defaults. 树(tree)在网页中以树形结构显示分层数据.它向用户提供展开.折叠.拖拽.编辑和异步加载功能. 树的数据格式(Tree D ...

  3. Java返回树形结构的数据 (children方式)

    以children这种方式的实体类来遍历子父级的树形结构. //问题分类下拉表 @Override public List<DA> selectDA(Long deptId,Long us ...

  4. java构建树形结构

    目录 前言 实现树形结构 一.树节点数据类(反回参数类) 二.给树形结构添加数据 三.测试类 四.测试结果 前言 在我们实际开发中会接触到树形结构,根节点子节点, 然后添加数据构成了我们的树形结构, ...

  5. java 构建树形结构_Java求助:如何建立一个树形结构

    在Java中如何实现一个如下的树形结构:root/|\year_2009year_2008year_2007,etc/|||month_1month_2month_1month_1|\|/\|day1 ...

  6. java 实现树形结构

    实体父类 @Data public class MenuTreeNode<T> {@ApiModelProperty(value = "节点ID")private St ...

  7. java遍历树形结构

    可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理. 我们一起来看 ...

  8. Java封装树形结构(任意父节点)

    直接上代码,比如封装组织树形结构: @Service public class TestService{public List<DepTreeDto> treeDept() {//查询列表 ...

  9. java 生成树形结构_java 生成树形结构(极速版)

    树形结构是非常常见的数据结构,生成树形结构的方法比较常见的有递归,for循环,不管使用什么方法,如果能很好地利用内存来合理地添加树节点,则能极大提高效率 测试代码如下: public class Te ...

  10. Java 树形结构目录树的几种生成方式

    使用场景

最新文章

  1. 【jQuery】如何用jQuery实现鼠标移入后改变背景颜色
  2. 视频会议的分类和适用范围详解
  3. Android Studio之gradle的配置与介绍
  4. android 数组赋值字符串_c语言中的字符数组与字符串
  5. Jmeter4.0----CSV Data Set Config_对输入参数进行参数化(13)
  6. 5 table滑动固定_内滑动钢套钢蒸汽直埋保温钢管
  7. 架构师论坛 创业_我在早期创业时作为设计师学到的东西
  8. java 反编译class文件_用Java实现JVM第三章《解析class文件》
  9. 苹果cms10自适应模板_哪里有苹果cms10自适应模板?
  10. mysql 的标识符_MySQL查询或标识符在Jupyter中太长?
  11. 旷视高调进军AIoT!先砸20亿建智能物流生态,发布机器人协作大脑河图
  12. php自定义类生成lib,thinkphp引入自定义封装类
  13. mysql(安装、启动、删除)服务
  14. 【UVA11988】Broken Keyboard (模拟链表 or 双端队列+栈)
  15. Navicat Premium 12注册机破解方法
  16. MySQL之数据库编程(了解语言结构)
  17. PyQt5中QComboBox选中文本居中显示
  18. 【Java】Date日期类诠释
  19. 10月14日科技资讯|华为折叠屏手机月底或开卖;苹果计划 3 年内推出 5G 基带芯片;Node.js 12.12.0 发布 | 极客头条
  20. 机械键盘各种轴的特点

热门文章

  1. python的ols_Python Statsmodels 统计包之 OLS 回归
  2. C++中的L和_T()
  3. 【docker】docker的简单状态监控
  4. C#_串口通信_SerialPort_一个最基础的串口程序
  5. 在windows下如何批量转换pvr,ccz为png或jpg
  6. HttpClient 4.3学习笔记
  7. Source Insight 3.5 序列号分享
  8. 分享Silverlight/WPF/Windows Phone一周学习导读(12月27日-1月2日)
  9. 成功自我暗示三大规律
  10. Python数据预处理之清及