1. 程式人生 > >java DefaultMutableTreeNode 樹形結構 目錄 1. Tree的概念 1 1.1. treeNode介面,mutabletreenode介面 1 1.2. 10-4:以T

java DefaultMutableTreeNode 樹形結構 目錄 1. Tree的概念 1 1.1. treeNode介面,mutabletreenode介面 1 1.2. 10-4:以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