Swing樹元件的使用
Swing樹元件
一、簡單的樹
樹狀結構是一種常用的資訊表現形式,它可以直觀的顯示出一組資訊的層次結構。Swing中的JTree類是用來建立樹的,該類的常用構造方法如下:
JTree():建立一個預設的樹
JTree(TreeNode node):根據指定根節點建立樹。
JTree(TreeModel newModel):根據指定樹模型建立樹.
DefaultMutableTreeNode類實現了TreeNode介面,用來建立樹的節點,DefaultMutableTreeNode類的add()方法為節點新增子節點。
DefaultTreeModel類實現了TreeModel介面,該類提供了兩個構造方法,所以在利用該類建立樹模型時,必須指定樹的根節點。構造方法如下:
DefaultTreeModel(TreeNode root):建立一個採用預設方式來判斷節點是否為葉子節點的樹模型。
DefaultTreeModel(TreeNode root,boolean askAllowsChildren):建立一個採用指定方式來判斷節點是否為葉子節點的樹模型。
二、處理選中節點事件
樹的節點允許被選中和選中狀態,通過捕獲樹節點的選擇事件,可以處理相應的操作樹的選擇模式有三種,通過TreeSelectionModel類的物件可以設定樹的選擇模式。可以通過JTree類的getSelctionModel()方法獲得TreeSelectionModel
SINGLE_TREE_SELECTION:只允許選中一個
CONTIGUOUS_TREE_SELECTION:允許連續選擇多個
DISCONTIGUOUS_TREE_SELECTION:允許隨意選中多個
當選中樹節點和取消樹節點的選中狀態時,將發出TreeSelectionEvent事件,通過實現TreeSelectionListener介面可以捕獲該事件。TreeSelectionListener介面的具體定義:
Public interface TreeSelectionListener extends EventListener{
Void valueChanged(TreeSelectionEvent e);
}
當捕獲發出的TreeSelectionEvent事件時,Void valueChanged(TreeSelectionEvent e)方法將被觸發執行,此時可通過JTree類的getSelectionPaths()方法獲得所有 被選中節點的路徑,該方法將返回一個TreePath型別的陣列;通過getSelectionPath()方法可以獲取選中節點中的索引的最小的節點的路徑,即TreePath物件,在此之前,可以通過JTree類的isSelectionEmpty()方法檢視是否存在被選中的節點,可以通過getSelectionCount()方法可以獲取被選中節點的數量。
TreePath類的常用方法:
getPath():以Object陣列的形式返回該路徑中所有節點的物件,在陣列中的順序按照從根節點到子節點的順序。
getLastPathComponent():獲得該路徑中最後一個節點的物件。
getParentPath():獲得路徑中除了最後一個節點的路徑
pathByAddingChild():獲得向路徑中新增指定節點後的路徑
getPathCount():獲得向路徑中包含節點的數量
getPathComponent(int element):獲得路徑中指定索引位置的節點物件
三、遍歷樹節點
DefaultMutableTreeNode類提供了兩組相對的遍歷方式,如下:
前序遍歷和後序遍歷是一組相對的遍歷方式,方法分別為:preorderEnumeration()和postorderEnumeration()方法,返回的是列舉型別物件。
廣度優先遍歷和深度優先遍歷是一組相對的遍歷方式,方法分別為:breadFirstEnumeration()和deptFirstEnumeration()方法,返回的是列舉型別物件。