java DefaultMutableTreeNode 樹形結構 目錄 1. Tree的概念 1 1.1. treeNode介面,mutabletreenode介面 1 1.2. 10-4:以T
java DefaultMutableTreeNode 樹形結構
目錄
1.1. treeNode介面,mutabletreenode介面 1
1.2. 10-4:以TreeModel構造JTree. 1
3. 節點: DefaultMutableTreeNode 2
樹。將分層資料顯示為樹狀輪廓的元件。
一顆樹由若干節點,通過層級關係組成,一個節點由TreeNode例項來表示,節點在樹中的位置(路徑)由TreePath例項來表示(定位)。
建立樹時,首先要建立一個根節點,然後建立第二層節點新增到根節點,繼續建立節點新增到其父節點,最終形成由根節點所引領的一棵樹,再由 JTree 陣列件顯示出來。所有擁有子節點的節點可以自由展開或摺疊子節點。
TreeNode 是一個介面,建立節點物件時,通常使用已實現該介面的的 DefaultMutableTreeNode 類。
除了以節點的觀念(TreeNode)建立樹之外,你可以用data model的模式建立樹。樹的data model稱為TreeModel,用此模式的好處 是可以觸發相關的樹事件,來處理樹可能產生的一些變動。
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();
---------------------
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