JavaTM 2 Platform
Standard Ed. 6

javax.swing.tree
類別 DefaultMutableTreeNode

java.lang.Object
  繼承者 javax.swing.tree.DefaultMutableTreeNode
所有已實作的介面:
Serializable, Cloneable, MutableTreeNode, TreeNode
直接已知子類別:
JTree.DynamicUtilTreeNode

public class DefaultMutableTreeNode
extends Object
implements Cloneable, MutableTreeNode, Serializable

DefaultMutableTreeNode 是階層樹資料結構中的通用節點。有關使用預設可變階層樹節點的範例,請參閱 The Java Tutorial 中的 How to Use Trees 一節。

一個階層樹節點最多可以有一個父節點、0 或多個子節點。DefaultMutableTreeNode 為檢查和修改節點的父節點和子節點提供操作,也為檢查節點所屬的階層樹提供操作。節點的階層樹是所有節點的集合,通過從某一節點開始並沿著父節點和子節點的所有可能的連接,可以存取這些節點。不帶父節點的節點是階層樹的根;不帶子節點的節點是葉節點。階層樹可以由許多子階層樹組成,每個節點充當自已的子階層樹的根。

此類別提供按各種順序有效地遍歷階層樹或子階層樹,或者沿著兩節點間的路徑進行遍歷的列舉。DefaultMutableTreeNode 還可以保存對使用者物件的參考,使用者物件由使用者使用。通過 toString() 請求 DefaultMutableTreeNode 的字元串表示形式將返回其使用者物件的字元串表示形式。

這不是一個執行緒安全的類別。如果打算在多個執行緒中使用 DefaultMutableTreeNode(或 TreeNodes 的階層樹),則需要執行自己的同步。要採用的較好慣例是在階層樹的根節點上進行同步。

儘管 DefaultMutableTreeNode 實作 MutableTreeNode 介面,並允許您將其添加到 MutableTreeNode 的任何實作中,但是並不是 DefaultMutableTreeNode 中的所有方法都將適用於所有的 MutableTreeNodes 實作。特別是通過提供的一些列舉,使用其中一些方法,我們假定 DefaultMutableTreeNode 只包含 DefaultMutableNode 實例。無論添加什麼實作,所有的 TreeNode/MutableTreeNode 方法都將表現出定義的行為。

警告:此類別的已序列化物件與以後的 Swing 版本不相容。當前的序列化支持適用於短期存儲或運行相同 Swing 版本的應用程序之間的 RMI。從 1.4 版本開始,已在 java.beans 套件中添加了支持所有 JavaBeansTM 長期存儲的功能。請參見 XMLEncoder

另請參見:
MutableTreeNode

欄位摘要
protected  boolean allowsChildren
          如果該節點可以有子節點,則為 true
protected  Vector children
          子節點的陣列,如果此節點沒有子節點,則可以為 null
static Enumeration<TreeNode> EMPTY_ENUMERATION
          始終為空的列舉。
protected  MutableTreeNode parent
          此節點的父節點,如果此節點沒有父節點,則為 null
protected  Object userObject
          可選使用者物件
 
建構子摘要
DefaultMutableTreeNode()
          創建沒有父節點和子節點的階層樹節點,該階層樹節點允許有子節點。
DefaultMutableTreeNode(Object userObject)
          創建沒有父節點和子節點、但允許有子節點的階層樹節點,並使用指定的使用者物件對它進行初始化。
DefaultMutableTreeNode(Object userObject, boolean allowsChildren)
          創建沒有父節點和子節點的階層樹節點,使用指定的使用者物件對它進行初始化,僅在指定時才允許有子節點。
 
方法摘要
 void add(MutableTreeNode newChild)
          從其父節點移除 newChild,並通過將其添加到此節點的子陣列的結尾,使其成為此節點的子節點。
 Enumeration breadthFirstEnumeration()
          創建並返回一個列舉,該列舉按廣度優先的順序遍歷以此節點為根的子階層樹。
 Enumeration children()
          創建並返回此節點的子節點的正向列舉。
 Object clone()
          覆寫以複製 public。
 Enumeration depthFirstEnumeration()
          創建並返回一個列舉,該列舉按深度優先的順序遍歷以此節點為根的子階層樹。
 boolean getAllowsChildren()
          如果允許此節點擁有子節點,則返回 true。
 TreeNode getChildAfter(TreeNode aChild)
          返回此節點的子節點陣列中剛好跟在 aChild 之後的子節點,它必須是此節點的子節點。
 TreeNode getChildAt(int index)
          返回此節點的子節點陣列中指定索引處的子節點。
 TreeNode getChildBefore(TreeNode aChild)
          返回此節點的子節點陣列中剛好在 aChild 之前的子節點,它必須是此節點的子節點。
 int getChildCount()
          返回此節點的子節點數。
 int getDepth()
          返回以此節點為根的階層樹的深度 -- 從此節點到葉節點的最長距離。
 TreeNode getFirstChild()
          返回此節點的第一個子節點。
 DefaultMutableTreeNode getFirstLeaf()
          尋找並返回為此節點後代的第一個葉節點,即此節點或其第一個子節點的第一個葉節點。
 int getIndex(TreeNode aChild)
          返回此節點的子節點陣列中指定子節點的索引。
 TreeNode getLastChild()
          返回此節點的最後一個子節點。
 DefaultMutableTreeNode getLastLeaf()
          尋找並返回為此節點後代的最後一個葉節點,即此節點或其最後一個子節點的最後一個葉節點。
 int getLeafCount()
          返回為此節點後代的葉節點總數。
 int getLevel()
          返回此節點上的級數 -- 從根到此節點的距離。
 DefaultMutableTreeNode getNextLeaf()
          返回此節點後面的葉節點,如果此節點是階層樹中的最後一個葉節點,則返回 null。
 DefaultMutableTreeNode getNextNode()
          返回在此節點的階層樹的前序遍歷中此節點之後的節點。
 DefaultMutableTreeNode getNextSibling()
          返回父節點的子節點陣列中此節點的下一個兄弟節點。
 TreeNode getParent()
          返回此節點的父節點,如果此節點沒有父節點,則返回 null。
 TreeNode[] getPath()
          返回從根到達此節點的路徑。
protected  TreeNode[] getPathToRoot(TreeNode aNode, int depth)
          建構節點的父節點一直到根節點(包括根節點),其中源節點是返回陣列中的最後一個元素。
 DefaultMutableTreeNode getPreviousLeaf()
          返回此節點之前的葉節點,如果此節點是階層樹中的第一個葉節點,則返回 null。
 DefaultMutableTreeNode getPreviousNode()
          返回在此節點階層樹的前序遍歷中此節點之前的節點。
 DefaultMutableTreeNode getPreviousSibling()
          返回父節點的子節點陣列中此節點的前一個兄弟節點。
 TreeNode getRoot()
          返回包含此節點的階層樹的根。
 TreeNode getSharedAncestor(DefaultMutableTreeNode aNode)
          返回此節點和 aNode 最近的共同祖先。
 int getSiblingCount()
          返回此節點的兄弟節點數。
 Object getUserObject()
          返回此節點的使用者物件。
 Object[] getUserObjectPath()
          返回從根到達此節點的路徑。
 void insert(MutableTreeNode newChild, int childIndex)
          從其現有父節點移除 newChild(如果它有父節點),將子節點的父節點設置為此節點,然後,將該子節點添加到此節點位於索引 childIndex 處的子節點陣列。
 boolean isLeaf()
          如果此節點沒有子節點,則返回 true。
 boolean isNodeAncestor(TreeNode anotherNode)
          如果 anotherNode 是此節點的祖先 -- 如果它是此節點、此節點的父節點或此節點的父節點的祖先,則返回 true。
 boolean isNodeChild(TreeNode aNode)
          如果 aNode 是此節點的子節點,則返回 true。
 boolean isNodeDescendant(DefaultMutableTreeNode anotherNode)
          如果 anotherNode 是此節點的後代 -- 如果它是此節點、此節點的一個子節點或此節點的一個子節點的後代,則返回 true。
 boolean isNodeRelated(DefaultMutableTreeNode aNode)
          當且僅當 aNode 位於與此節點相同的階層樹中時,返回 true。
 boolean isNodeSibling(TreeNode anotherNode)
          如果 anotherNode 是此節點的兄弟節點(與此節點共享同一父節點),則返回 true。
 boolean isRoot()
          如果此節點是階層樹的根,則返回 true。
 Enumeration pathFromAncestorEnumeration(TreeNode ancestor)
          創建並返回沿著從 ancestor 到此節點的路徑的一個列舉。
 Enumeration postorderEnumeration()
          創建並返回按後序遍歷以此節點為根的階層樹的一個列舉。
 Enumeration preorderEnumeration()
          創建並返回按前序遍歷以此節點為根的子階層樹的一個列舉。
 void remove(int childIndex)
          從此節點的子節點中移除指定索引處的子節點,並將該節點的父節點設置為 null。
 void remove(MutableTreeNode aChild)
          通過向其提供一個 null 父節點,從此節點的子節點陣列移除 aChild
 void removeAllChildren()
          通過將其父節點設置為 null,移除此節點的所有子節點。
 void removeFromParent()
          通過向此節點提供一個 null 父節點,從階層樹中移除以此節點為根的子階層樹。
 void setAllowsChildren(boolean allows)
          確定是否允許此節點擁有子節點。
 void setParent(MutableTreeNode newParent)
          將此節點的父節點設置為 newParent,但不更改父節點的子節點陣列。
 void setUserObject(Object userObject)
          將此節點的使用者物件設置為 userObject
 String toString()
          返回將 toString() 發送到此節點的使用者物件的結果,如果此節點沒有使用者物件,則返回 null。
 
從類別 java.lang.Object 繼承的方法
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

EMPTY_ENUMERATION

public static final Enumeration<TreeNode> EMPTY_ENUMERATION
始終為空的列舉。當請求葉節點的子節點的列舉時使用它。


parent

protected MutableTreeNode parent
此節點的父節點,如果此節點沒有父節點,則為 null


children

protected Vector children
子節點的陣列,如果此節點沒有子節點,則可以為 null


userObject

protected transient Object userObject
可選使用者物件


allowsChildren

protected boolean allowsChildren
如果該節點可以有子節點,則為 true

建構子詳細資訊

DefaultMutableTreeNode

public DefaultMutableTreeNode()
創建沒有父節點和子節點的階層樹節點,該階層樹節點允許有子節點。


DefaultMutableTreeNode

public DefaultMutableTreeNode(Object userObject)
創建沒有父節點和子節點、但允許有子節點的階層樹節點,並使用指定的使用者物件對它進行初始化。

參數:
userObject - 使用者提供的 Object,它構成節點的資料

DefaultMutableTreeNode

public DefaultMutableTreeNode(Object userObject,
                              boolean allowsChildren)
創建沒有父節點和子節點的階層樹節點,使用指定的使用者物件對它進行初始化,僅在指定時才允許有子節點。

參數:
userObject - 使用者提供的 Object,它構成該節點的資料
allowsChildren - 如果為 true,則允許該節點有子節點,否則它始終為一個葉節點
方法詳細資訊

insert

public void insert(MutableTreeNode newChild,
                   int childIndex)
從其現有父節點移除 newChild(如果它有父節點),將子節點的父節點設置為此節點,然後,將該子節點添加到此節點位於索引 childIndex 處的子節點陣列。newChild 不能為 null,也不能為此節點的祖先。

指定者:
介面 MutableTreeNode 中的 insert
參數:
newChild - 在此節點下插入的 MutableTreeNode
childIndex - 此節點的子節點陣列中的索引,它是此節點插入的位置
拋出:
ArrayIndexOutOfBoundsException - 如果 childIndex 超出邊界
IllegalArgumentException - 如果 newChild 為 null,或者是此節點的祖先
IllegalStateException - 如果此節點不允許有子節點
另請參見:
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)

remove

public void remove(int childIndex)
從此節點的子節點中移除指定索引處的子節點,並將該節點的父節點設置為 null。要移除的子節點必須是 MutableTreeNode

指定者:
介面 MutableTreeNode 中的 remove
參數:
childIndex - 要移除的此節點的子節點陣列中子節點的索引
拋出:
ArrayIndexOutOfBoundsException - 如果 childIndex 超出邊界

setParent

public void setParent(MutableTreeNode newParent)
將此節點的父節點設置為 newParent,但不更改父節點的子節點陣列。從 insert()remove() 調用此方法,以重新分派子節點的父節點,而不應從其他任何地方向它傳遞訊息。

指定者:
介面 MutableTreeNode 中的 setParent
參數:
newParent - 此節點的新父節點

getParent

public TreeNode getParent()
返回此節點的父節點,如果此節點沒有父節點,則返回 null。

指定者:
介面 TreeNode 中的 getParent
返回:
此節點的父 TreeNode,如果此節點沒有父節點,則返回 null

getChildAt

public TreeNode getChildAt(int index)
返回此節點的子節點陣列中指定索引處的子節點。

指定者:
介面 TreeNode 中的 getChildAt
參數:
index - 此節點的子節點陣列中的一個索引
返回:
此節點的子節點陣列中指定索引處的 TreeNode
拋出:
ArrayIndexOutOfBoundsException - 如果 index 超出邊界

getChildCount

public int getChildCount()
返回此節點的子節點數。

指定者:
介面 TreeNode 中的 getChildCount
返回:
提供此節點的子節點數的 int

getIndex

public int getIndex(TreeNode aChild)
返回此節點的子節點陣列中指定子節點的索引。如果指定節點不是此節點的子節點,則返回 -1。此方法執行線性搜尋,該方法花費時間為 O(n),其中 n 表示子節點數。

指定者:
介面 TreeNode 中的 getIndex
參數:
aChild - 要在此節點的子節點中搜尋的 TreeNode
返回:
提供此節點的子節點陣列中節點索引的 int,如果指定的節點不是此節點的子節點,則返回 -1
拋出:
IllegalArgumentException - 如果 aChild 為 null

children

public Enumeration children()
創建並返回此節點的子節點的正向列舉。修改此節點的子節點陣列會使修改前創建的任何子節點列舉無效。

指定者:
介面 TreeNode 中的 children
返回:
此節點的子節點 Enumeration

setAllowsChildren

public void setAllowsChildren(boolean allows)
確定是否允許此節點擁有子節點。如果 allows 為 false,則移除此節點的所有子節點。

註:預設情況下,節點允許有子節點。

參數:
allows - 如果允許此節點擁有子節點,則為 true

getAllowsChildren

public boolean getAllowsChildren()
如果允許此節點擁有子節點,則返回 true。

指定者:
介面 TreeNode 中的 getAllowsChildren
返回:
如果此節點允許擁有子節點,則返回 true,否則返回 false

setUserObject

public void setUserObject(Object userObject)
將此節點的使用者物件設置為 userObject

指定者:
介面 MutableTreeNode 中的 setUserObject
參數:
userObject - 構成此節點的使用者指定資料的 Object
另請參見:
getUserObject(), toString()

getUserObject

public Object getUserObject()
返回此節點的使用者物件。

返回:
使用者存儲在此節點的 Object
另請參見:
setUserObject(java.lang.Object), toString()

removeFromParent

public void removeFromParent()
通過向此節點提供一個 null 父節點,從階層樹中移除以此節點為根的子階層樹。如果此節點是其階層樹的根,則不執行任何操作。

指定者:
介面 MutableTreeNode 中的 removeFromParent

remove

public void remove(MutableTreeNode aChild)
通過向其提供一個 null 父節點,從此節點的子節點陣列移除 aChild

指定者:
介面 MutableTreeNode 中的 remove
參數:
aChild - 要移除的此節點的子節點
拋出:
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點

removeAllChildren

public void removeAllChildren()
通過將其父節點設置為 null,移除此節點的所有子節點。如果此節點沒有子節點,則此方法不執行任何操作。


add

public void add(MutableTreeNode newChild)
從其父節點移除 newChild,並通過將其添加到此節點的子陣列的結尾,使其成為此節點的子節點。

參數:
newChild - 作為此節點的子節點添加的節點
拋出:
IllegalArgumentException - 如果 newChild 為 null
IllegalStateException - 如果此節點不允許擁有子節點
另請參見:
insert(javax.swing.tree.MutableTreeNode, int)

isNodeAncestor

public boolean isNodeAncestor(TreeNode anotherNode)
如果 anotherNode 是此節點的祖先 -- 如果它是此節點、此節點的父節點或此節點的父節點的祖先,則返回 true。(注意,節點被認為是它本身的祖先。)如果 anotherNode 為 null,則此方法返回 false。此操作至少花費時間 O(h),其中 h 表示根到此節點的距離。

參數:
anotherNode - 測試是否為此節點的祖先的節點
返回:
如果此節點是 anotherNode 的後代,則返回 true
另請參見:
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode), getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)

isNodeDescendant

public boolean isNodeDescendant(DefaultMutableTreeNode anotherNode)
如果 anotherNode 是此節點的後代 -- 如果它是此節點、此節點的一個子節點或此節點的一個子節點的後代,則返回 true。注意,節點被認為是它本身的後代。如果 anotherNode 為 null,則返回 false。此操作至少花費時間 O(h),其中 h 表示根到 anotherNode 的距離。

參數:
anotherNode - 測試是否為此節點的後代的節點
返回:
如果此節點是 anotherNode 的祖先,則返回 true
另請參見:
isNodeAncestor(javax.swing.tree.TreeNode), getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)

getSharedAncestor

public TreeNode getSharedAncestor(DefaultMutableTreeNode aNode)
返回此節點和 aNode 最近的共同祖先。如果不存在這樣的祖先 -- 如果此節點和 aNode 位於不同的階層樹中,或者 aNode 為 null,則返回 null。節點被認為是它本身的祖先。

參數:
aNode - 尋找其共同祖先的節點
返回:
此節點和 aNode 最近的共同祖先,如果沒有,則返回 null
另請參見:
isNodeAncestor(javax.swing.tree.TreeNode), isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)

isNodeRelated

public boolean isNodeRelated(DefaultMutableTreeNode aNode)
當且僅當 aNode 位於與此節點相同的階層樹中時,返回 true。如果 aNode 為 null,則返回 false。

返回:
如果 aNode 位於與此節點相同的階層樹中,則返回 true;如果 aNode 為 null,則返回 false
另請參見:
getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode), getRoot()

getDepth

public int getDepth()
返回以此節點為根的階層樹的深度 -- 從此節點到葉節點的最長距離。如果此節點沒有子節點,則返回 0。此操作的開銷遠大於 getLevel(),因為它必須有效地遍歷以此節點為根的整棵階層樹。

返回:
以此節點為根的階層樹的深度
另請參見:
getLevel()

getLevel

public int getLevel()
返回此節點上的級數 -- 從根到此節點的距離。如果此節點為根,則返回 0。

返回:
此節點上的級數
另請參見:
getDepth()

getPath

public TreeNode[] getPath()
返回從根到達此節點的路徑。該路徑中最後一個元素是此節點。

返回:
提供了路徑的 TreeNode 物件組成的陣列,其中此路徑中的第一個元素是根,最後一個元素是此節點。

getPathToRoot

protected TreeNode[] getPathToRoot(TreeNode aNode,
                                   int depth)
建構節點的父節點一直到根節點(包括根節點),其中源節點是返回陣列中的最後一個元素。返回的陣列長度給出了階層樹中節點的深度。

參數:
aNode - 獲取其路徑的 TreeNode
depth - 提供朝根的方向(通過遞歸調用)執行的步驟數的 int,用於衡量返回的陣列的大小
返回:
提供從根到指定節點的路徑的 TreeNodes 組成的陣列。

getUserObjectPath

public Object[] getUserObjectPath()
返回從根到達此節點的路徑。如果路徑中某些 TreeNodes 的使用者物件為 null ,則返回的路徑將包含 null。


getRoot

public TreeNode getRoot()
返回包含此節點的階層樹的根。根是所有節點的祖先,其父節點為 null。

返回:
包含此節點的階層樹的根
另請參見:
isNodeAncestor(javax.swing.tree.TreeNode)

isRoot

public boolean isRoot()
如果此節點是階層樹的根,則返回 true。根是階層樹中父節點為 null 的惟一節點;每棵階層樹只有一個根。

返回:
如果此節點是階層樹的根,則返回 true

getNextNode

public DefaultMutableTreeNode getNextNode()
返回在此節點的階層樹的前序遍歷中此節點之後的節點。如果此節點是該遍歷中的最後一個節點,則返回 null。這是遍歷整棵階層樹的一種低效方式;請改用列舉。

返回:
前序遍歷中此節點之後的節點,如果此節點是最後一個節點,則返回 null
另請參見:
preorderEnumeration()

getPreviousNode

public DefaultMutableTreeNode getPreviousNode()
返回在此節點階層樹的前序遍歷中此節點之前的節點。如果此節點是遍歷的第一個節點 -- 階層樹的根,則返回 null。這是遍歷整棵階層樹的一種低效方式;請改用列舉。

返回:
前序遍歷中此節點之前的節點,如果此節點是第一個節點,則返回 null
另請參見:
preorderEnumeration()

preorderEnumeration

public Enumeration preorderEnumeration()
創建並返回按前序遍歷以此節點為根的子階層樹的一個列舉。由列舉的 nextElement() 方法返回的第一個節點是此節點。

通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。

返回:
按前序遍歷遍歷階層樹的一個列舉
另請參見:
postorderEnumeration()

postorderEnumeration

public Enumeration postorderEnumeration()
創建並返回按後序遍歷以此節點為根的階層樹的一個列舉。由列舉的 nextElement() 方法返回的第一個節點是最左邊的葉節點。這與深度優先遍歷相同。

通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。

返回:
按後序遍歷遍歷階層樹的一個列舉
另請參見:
depthFirstEnumeration(), preorderEnumeration()

breadthFirstEnumeration

public Enumeration breadthFirstEnumeration()
創建並返回一個列舉,該列舉按廣度優先的順序遍歷以此節點為根的子階層樹。由列舉的 nextElement() 方法返回的第一個節點是此節點。

通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。

返回:
按廣度優先的順序遍歷階層樹的一個列舉
另請參見:
depthFirstEnumeration()

depthFirstEnumeration

public Enumeration depthFirstEnumeration()
創建並返回一個列舉,該列舉按深度優先的順序遍歷以此節點為根的子階層樹。由列舉的 nextElement() 方法返回的第一個節點是最左邊的葉節點。這與後序遍歷相同。

通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。

返回:
按深度優先的順序遍歷階層樹的一個列舉
另請參見:
breadthFirstEnumeration(), postorderEnumeration()

pathFromAncestorEnumeration

public Enumeration pathFromAncestorEnumeration(TreeNode ancestor)
創建並返回沿著從 ancestor 到此節點的路徑的一個列舉。列舉的 nextElement() 方法首先返回 ancestor,然後返回作為此節點祖先的 ancestor 的子節點,依此類別推,最後返回此節點。創建列舉所花費的時間是 O(m),其中 m 是此節點和 ancestor(包含)之間的節點數。每個 nextElement() 訊息的花費都是 O(1)。

通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。

返回:
一個列舉,它在從此節點的祖先到此節點的路徑上
拋出:
IllegalArgumentException - 如果 ancestor 不是此節點的祖先
另請參見:
isNodeAncestor(javax.swing.tree.TreeNode), isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)

isNodeChild

public boolean isNodeChild(TreeNode aNode)
如果 aNode 是此節點的子節點,則返回 true。如果 aNode 為 null,則此方法返回 false。

返回:
如果 aNode 為此節點的子節點,則返回 true;如果 aNode 為 null,則返回 false

getFirstChild

public TreeNode getFirstChild()
返回此節點的第一個子節點。如果此節點沒有子節點,則拋出 NoSuchElementException。

返回:
此節點的第一個子節點
拋出:
NoSuchElementException - 如果此節點沒有子節點

getLastChild

public TreeNode getLastChild()
返回此節點的最後一個子節點。如果此節點沒有子節點,則拋出 NoSuchElementException。

返回:
此節點的最後一個子節點
拋出:
NoSuchElementException - 如果此節點沒有子節點

getChildAfter

public TreeNode getChildAfter(TreeNode aChild)
返回此節點的子節點陣列中剛好跟在 aChild 之後的子節點,它必須是此節點的子節點。如果 aChild 是最後一個子節點,則返回 null。此方法對此節點的子節點執行線性搜尋,以尋找 aChild ,並且花費時間為 O(n),其中 n 表示子節點數;要遍歷整個子節點陣列,請改用列舉。

返回:
此節點的子節點,它剛好跟在 aChild 之後
拋出:
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點
另請參見:
children

getChildBefore

public TreeNode getChildBefore(TreeNode aChild)
返回此節點的子節點陣列中剛好在 aChild 之前的子節點,它必須是此節點的子節點。如果 aChild 是第一個子節點,則返回 null。此方法對此節點的子節點執行線性搜尋,以尋找 aChild ,並且花費時間為 O(n) ,其中 n 表示子節點數。

返回:
此節點的子節點,它剛好在 aChild 之前
拋出:
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點

isNodeSibling

public boolean isNodeSibling(TreeNode anotherNode)
如果 anotherNode 是此節點的兄弟節點(與此節點共享同一父節點),則返回 true。節點是其本身的兄弟節點。如果 anotherNode 為 null,則返回 false。

參數:
anotherNode - 測試其是否為此節點的兄弟節點
返回:
如果 anotherNode 是此節點的兄弟節點,則返回 true

getSiblingCount

public int getSiblingCount()
返回此節點的兄弟節點數。節點是其本身的兄弟節點(如果它沒有父節點,或者沒有兄弟節點,則此方法返回 1)。

返回:
此節點的兄弟節點數

getNextSibling

public DefaultMutableTreeNode getNextSibling()
返回父節點的子節點陣列中此節點的下一個兄弟節點。如果此節點沒有父節點,或者是父節點的最後一個子節點,則返回 null。此方法執行線性搜尋,花費時間為 O(n),其中 n 表示子節點數;要遍歷整個陣列,請改用父節點的子節點列舉。

返回:
此節點的兄弟節點,它剛好跟在此節點之後
另請參見:
children

getPreviousSibling

public DefaultMutableTreeNode getPreviousSibling()
返回父節點的子節點陣列中此節點的前一個兄弟節點。如果此節點沒有父節點,或者是父節點的第一個子節點,則返回 null。此方法執行線性搜尋,花費時間為 O(n),其中 n 表示子節點數。

返回:
此節點的兄弟節點,它剛好在此節點之前

isLeaf

public boolean isLeaf()
如果此節點沒有子節點,則返回 true。要區分沒有子節點的節點和不能 擁有子節點的節點(例如,區分空目錄中的檔案),請將此方法與 getAllowsChildren 聯合使用

指定者:
介面 TreeNode 中的 isLeaf
返回:
如果此節點沒有子節點,則返回 true
另請參見:
getAllowsChildren()

getFirstLeaf

public DefaultMutableTreeNode getFirstLeaf()
尋找並返回為此節點後代的第一個葉節點,即此節點或其第一個子節點的第一個葉節點。如果它是葉節點,則返回此節點。

返回:
以此節點為根的子階層樹中的第一個葉節點
另請參見:
isLeaf(), isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)

getLastLeaf

public DefaultMutableTreeNode getLastLeaf()
尋找並返回為此節點後代的最後一個葉節點,即此節點或其最後一個子節點的最後一個葉節點。如果它是葉節點,則返回此節點。

返回:
以此節點為根的子階層樹中的最後一個葉節點
另請參見:
isLeaf(), isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)

getNextLeaf

public DefaultMutableTreeNode getNextLeaf()
返回此節點後面的葉節點,如果此節點是階層樹中的最後一個葉節點,則返回 null。

MutableNode 介面的此實作中,此操作效率非常低。為了確定下一個節點,此方法首先在父節點的子節點列表中執行線性搜尋,以便找到當前節點。

該實作使該操作適合於從已知位置開始的簡短遍歷。但是,要遍歷階層樹中的所有葉節點,您應使用 depthFirstEnumeration 來列舉階層樹中的節點,並對每個節點執行 isLeaf 確定哪些是葉節點。

返回:
返回此節點之後的下一個葉節點
另請參見:
depthFirstEnumeration(), isLeaf()

getPreviousLeaf

public DefaultMutableTreeNode getPreviousLeaf()
返回此節點之前的葉節點,如果此節點是階層樹中的第一個葉節點,則返回 null。

MutableNode 介面的此實作中,此操作效率非常低。為了確定前一個節點,此方法首先在父節點的子節點列表中執行線性搜尋,以便找到當前節點。

該實作使得操作適合於從已知位置開始的簡短遍歷。但是,要遍歷階層樹中的所有葉節點,您應使用 depthFirstEnumeration 來列舉階層樹中的節點,並對每個節點執行 isLeaf 確定哪些是葉節點。

返回:
返回此節點之前的葉節點
另請參見:
depthFirstEnumeration(), isLeaf()

getLeafCount

public int getLeafCount()
返回為此節點後代的葉節點總數。如果此節點是葉節點,則返回 1。此方法花費時間為 O(n),其中 n 表示此節點的後代數。

返回:
此節點下面的葉節點數
另請參見:
isNodeAncestor(javax.swing.tree.TreeNode)

toString

public String toString()
返回將 toString() 發送到此節點的使用者物件的結果,如果此節點沒有使用者物件,則返回 null。

覆寫:
類別 Object 中的 toString
返回:
該物件的字元串表示形式。
另請參見:
getUserObject()

clone

public Object clone()
覆寫以複製 public。返回對此節點的淺表複製;新的節點沒有父節點或子節點,但具有對同一使用者物件(如果有)的參考。

覆寫:
類別 Object 中的 clone
返回:
此節點的副本
另請參見:
Cloneable

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only