zoukankan      html  css  js  c++  java
  • java DefaultMutableTreeNode 树形结构 目录 1. Tree的概念 1 1.1. treeNode接口,mutabletreenode接口 1 1.2. 104:以T

    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

  • 相关阅读:
    代办事项
    问题总结2015/05/05
    Android Studio 更新
    Android 防内存泄露handler
    android canvas 绘图笔记
    Android Studio compile error : enum constant INSTANT_RUN_REPLACEMENT does not exist in class
    android Studio 配置LUA 开发环境
    Android 性能优化之(1)-MAT使用教程
    shareSdk打包报错解决办法
    Android 事件分发机制
  • 原文地址:https://www.cnblogs.com/attilax/p/15197396.html
Copyright © 2011-2022 走看看