1. 程式人生 > >Swing樹元件的使用

Swing樹元件的使用

Swing樹元件

一、簡單的樹

樹狀結構是一種常用的資訊表現形式,它可以直觀的顯示出一組資訊的層次結構。Swing中的JTree類是用來建立樹的,該類的常用構造方法如下:

JTree():建立一個預設的樹

JTreeTreeNode node):根據指定根節點建立樹。

JTreeTreeModel newModel):根據指定樹模型建立樹.

DefaultMutableTreeNode類實現了TreeNode介面,用來建立樹的節點,DefaultMutableTreeNode類的add()方法為節點新增子節點。

DefaultTreeModel類實現了TreeModel介面,該類提供了兩個構造方法,所以在利用該類建立樹模型時,必須指定樹的根節點。構造方法如下:

DefaultTreeModelTreeNode root):建立一個採用預設方式來判斷節點是否為葉子節點的樹模型。

DefaultTreeModelTreeNode rootboolean askAllowsChildren):建立一個採用指定方式來判斷節點是否為葉子節點的樹模型。

 

 

二、處理選中節點事件

樹的節點允許被選中和選中狀態,通過捕獲樹節點的選擇事件,可以處理相應的操作樹的選擇模式有三種,通過TreeSelectionModel類的物件可以設定樹的選擇模式。可以通過JTree類的getSelctionModel()方法獲得TreeSelectionModel

類的物件,然後通過TreeSelctionModel類的setSelectionModelint mode)方法設定選擇模式,該方法的入口引數為:

SINGLE_TREE_SELECTION:只允許選中一個

CONTIGUOUS_TREE_SELECTION:允許連續選擇多個

DISCONTIGUOUS_TREE_SELECTION:允許隨意選中多個

當選中樹節點和取消樹節點的選中狀態時,將發出TreeSelectionEvent事件,通過實現TreeSelectionListener介面可以捕獲該事件。TreeSelectionListener介面的具體定義:

Public interface TreeSelectionListener extends EventListener{

     Void valueChangedTreeSelectionEvent e);

}

當捕獲發出的TreeSelectionEvent事件時,Void valueChangedTreeSelectionEvent e)方法將被觸發執行,此時可通過JTree類的getSelectionPaths()方法獲得所有 被選中節點的路徑,該方法將返回一個TreePath型別的陣列;通過getSelectionPath()方法可以獲取選中節點中的索引的最小的節點的路徑,即TreePath物件,在此之前,可以通過JTree類的isSelectionEmpty()方法檢視是否存在被選中的節點,可以通過getSelectionCount()方法可以獲取被選中節點的數量。

 TreePath類的常用方法:

getPath():以Object陣列的形式返回該路徑中所有節點的物件,在陣列中的順序按照從根節點到子節點的順序。

getLastPathComponent():獲得該路徑中最後一個節點的物件。

getParentPath():獲得路徑中除了最後一個節點的路徑

pathByAddingChild():獲得向路徑中新增指定節點後的路徑

getPathCount():獲得向路徑中包含節點的數量

getPathComponentint element):獲得路徑中指定索引位置的節點物件

 

三、遍歷樹節點

DefaultMutableTreeNode類提供了兩組相對的遍歷方式,如下:

前序遍歷和後序遍歷是一組相對的遍歷方式,方法分別為:preorderEnumeration()和postorderEnumeration()方法,返回的是列舉型別物件。

廣度優先遍歷和深度優先遍歷是一組相對的遍歷方式,方法分別為:breadFirstEnumeration()和deptFirstEnumeration()方法,返回的是列舉型別物件。