|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
java.lang.Objectjavax.swing.tree.DefaultMutableTreeNode
public class DefaultMutableTreeNode
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 |
| 欄位詳細資訊 |
|---|
public static final Enumeration<TreeNode> EMPTY_ENUMERATION
protected MutableTreeNode parent
protected Vector children
protected transient Object userObject
protected boolean allowsChildren
| 建構子詳細資訊 |
|---|
public DefaultMutableTreeNode()
public DefaultMutableTreeNode(Object userObject)
userObject - 使用者提供的 Object,它構成節點的資料
public DefaultMutableTreeNode(Object userObject,
boolean allowsChildren)
userObject - 使用者提供的 Object,它構成該節點的資料allowsChildren - 如果為 true,則允許該節點有子節點,否則它始終為一個葉節點| 方法詳細資訊 |
|---|
public void insert(MutableTreeNode newChild,
int childIndex)
newChild(如果它有父節點),將子節點的父節點設置為此節點,然後,將該子節點添加到此節點位於索引 childIndex 處的子節點陣列。newChild 不能為 null,也不能為此節點的祖先。
MutableTreeNode 中的 insertnewChild - 在此節點下插入的 MutableTreeNodechildIndex - 此節點的子節點陣列中的索引,它是此節點插入的位置
ArrayIndexOutOfBoundsException - 如果 childIndex 超出邊界
IllegalArgumentException - 如果 newChild 為 null,或者是此節點的祖先
IllegalStateException - 如果此節點不允許有子節點isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)public void remove(int childIndex)
MutableTreeNode。
MutableTreeNode 中的 removechildIndex - 要移除的此節點的子節點陣列中子節點的索引
ArrayIndexOutOfBoundsException - 如果 childIndex 超出邊界public void setParent(MutableTreeNode newParent)
newParent,但不更改父節點的子節點陣列。從 insert() 和 remove() 調用此方法,以重新分派子節點的父節點,而不應從其他任何地方向它傳遞訊息。
MutableTreeNode 中的 setParentnewParent - 此節點的新父節點public TreeNode getParent()
TreeNode 中的 getParentpublic TreeNode getChildAt(int index)
TreeNode 中的 getChildAtindex - 此節點的子節點陣列中的一個索引
ArrayIndexOutOfBoundsException - 如果 index 超出邊界public int getChildCount()
TreeNode 中的 getChildCountpublic int getIndex(TreeNode aChild)
-1。此方法執行線性搜尋,該方法花費時間為 O(n),其中 n 表示子節點數。
TreeNode 中的 getIndexaChild - 要在此節點的子節點中搜尋的 TreeNode
-1
IllegalArgumentException - 如果 aChild 為 nullpublic Enumeration children()
TreeNode 中的 childrenpublic void setAllowsChildren(boolean allows)
allows 為 false,則移除此節點的所有子節點。
註:預設情況下,節點允許有子節點。
allows - 如果允許此節點擁有子節點,則為 truepublic boolean getAllowsChildren()
TreeNode 中的 getAllowsChildrenpublic void setUserObject(Object userObject)
userObject。
MutableTreeNode 中的 setUserObjectuserObject - 構成此節點的使用者指定資料的 ObjectgetUserObject(),
toString()public Object getUserObject()
setUserObject(java.lang.Object),
toString()public void removeFromParent()
MutableTreeNode 中的 removeFromParentpublic void remove(MutableTreeNode aChild)
aChild。
MutableTreeNode 中的 removeaChild - 要移除的此節點的子節點
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點public void removeAllChildren()
public void add(MutableTreeNode newChild)
newChild,並通過將其添加到此節點的子陣列的結尾,使其成為此節點的子節點。
newChild - 作為此節點的子節點添加的節點
IllegalArgumentException - 如果 newChild 為 null
IllegalStateException - 如果此節點不允許擁有子節點insert(javax.swing.tree.MutableTreeNode, int)public boolean isNodeAncestor(TreeNode anotherNode)
anotherNode 是此節點的祖先 -- 如果它是此節點、此節點的父節點或此節點的父節點的祖先,則返回 true。(注意,節點被認為是它本身的祖先。)如果 anotherNode 為 null,則此方法返回 false。此操作至少花費時間 O(h),其中 h 表示根到此節點的距離。
anotherNode - 測試是否為此節點的祖先的節點
anotherNode 的後代,則返回 trueisNodeDescendant(javax.swing.tree.DefaultMutableTreeNode),
getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)public boolean isNodeDescendant(DefaultMutableTreeNode anotherNode)
anotherNode 是此節點的後代 -- 如果它是此節點、此節點的一個子節點或此節點的一個子節點的後代,則返回 true。注意,節點被認為是它本身的後代。如果 anotherNode 為 null,則返回 false。此操作至少花費時間 O(h),其中 h 表示根到 anotherNode 的距離。
anotherNode - 測試是否為此節點的後代的節點
anotherNode 的祖先,則返回 trueisNodeAncestor(javax.swing.tree.TreeNode),
getSharedAncestor(javax.swing.tree.DefaultMutableTreeNode)public TreeNode getSharedAncestor(DefaultMutableTreeNode aNode)
aNode 最近的共同祖先。如果不存在這樣的祖先 -- 如果此節點和 aNode 位於不同的階層樹中,或者 aNode 為 null,則返回 null。節點被認為是它本身的祖先。
aNode - 尋找其共同祖先的節點
aNode 最近的共同祖先,如果沒有,則返回 nullisNodeAncestor(javax.swing.tree.TreeNode),
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)public boolean isNodeRelated(DefaultMutableTreeNode aNode)
aNode 位於與此節點相同的階層樹中時,返回 true。如果 aNode 為 null,則返回 false。
aNode 位於與此節點相同的階層樹中,則返回 true;如果 aNode 為 null,則返回 falsegetSharedAncestor(javax.swing.tree.DefaultMutableTreeNode),
getRoot()public int getDepth()
getLevel(),因為它必須有效地遍歷以此節點為根的整棵階層樹。
getLevel()public int getLevel()
getDepth()public TreeNode[] getPath()
protected TreeNode[] getPathToRoot(TreeNode aNode,
int depth)
aNode - 獲取其路徑的 TreeNodedepth - 提供朝根的方向(通過遞歸調用)執行的步驟數的 int,用於衡量返回的陣列的大小
public Object[] getUserObjectPath()
public TreeNode getRoot()
isNodeAncestor(javax.swing.tree.TreeNode)public boolean isRoot()
public DefaultMutableTreeNode getNextNode()
preorderEnumeration()public DefaultMutableTreeNode getPreviousNode()
null。這是遍歷整棵階層樹的一種低效方式;請改用列舉。
preorderEnumeration()public Enumeration preorderEnumeration()
nextElement() 方法返回的第一個節點是此節點。通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。
postorderEnumeration()public Enumeration postorderEnumeration()
nextElement() 方法返回的第一個節點是最左邊的葉節點。這與深度優先遍歷相同。通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。
depthFirstEnumeration(),
preorderEnumeration()public Enumeration breadthFirstEnumeration()
nextElement() 方法返回的第一個節點是此節點。通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。
depthFirstEnumeration()public Enumeration depthFirstEnumeration()
nextElement() 方法返回的第一個節點是最左邊的葉節點。這與後序遍歷相同。通過插入、移除或移動節點修改階層樹可以使修改前創建的任何列舉無效。
breadthFirstEnumeration(),
postorderEnumeration()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)public boolean isNodeChild(TreeNode aNode)
aNode 是此節點的子節點,則返回 true。如果 aNode 為 null,則此方法返回 false。
aNode 為此節點的子節點,則返回 true;如果 aNode 為 null,則返回 falsepublic TreeNode getFirstChild()
NoSuchElementException - 如果此節點沒有子節點public TreeNode getLastChild()
NoSuchElementException - 如果此節點沒有子節點public TreeNode getChildAfter(TreeNode aChild)
aChild 之後的子節點,它必須是此節點的子節點。如果 aChild 是最後一個子節點,則返回 null。此方法對此節點的子節點執行線性搜尋,以尋找 aChild ,並且花費時間為 O(n),其中 n 表示子節點數;要遍歷整個子節點陣列,請改用列舉。
aChild 之後
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點childrenpublic TreeNode getChildBefore(TreeNode aChild)
aChild 之前的子節點,它必須是此節點的子節點。如果 aChild 是第一個子節點,則返回 null。此方法對此節點的子節點執行線性搜尋,以尋找 aChild ,並且花費時間為 O(n) ,其中 n 表示子節點數。
aChild 之前
IllegalArgumentException - 如果 aChild 為 null,或者不是此節點的子節點public boolean isNodeSibling(TreeNode anotherNode)
anotherNode 是此節點的兄弟節點(與此節點共享同一父節點),則返回 true。節點是其本身的兄弟節點。如果 anotherNode 為 null,則返回 false。
anotherNode - 測試其是否為此節點的兄弟節點
anotherNode 是此節點的兄弟節點,則返回 truepublic int getSiblingCount()
1)。
public DefaultMutableTreeNode getNextSibling()
childrenpublic DefaultMutableTreeNode getPreviousSibling()
public boolean isLeaf()
getAllowsChildren 聯合使用
TreeNode 中的 isLeafgetAllowsChildren()public DefaultMutableTreeNode getFirstLeaf()
isLeaf(),
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)public DefaultMutableTreeNode getLastLeaf()
isLeaf(),
isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)public DefaultMutableTreeNode getNextLeaf()
在 MutableNode 介面的此實作中,此操作效率非常低。為了確定下一個節點,此方法首先在父節點的子節點列表中執行線性搜尋,以便找到當前節點。
該實作使該操作適合於從已知位置開始的簡短遍歷。但是,要遍歷階層樹中的所有葉節點,您應使用 depthFirstEnumeration 來列舉階層樹中的節點,並對每個節點執行 isLeaf 確定哪些是葉節點。
depthFirstEnumeration(),
isLeaf()public DefaultMutableTreeNode getPreviousLeaf()
在 MutableNode 介面的此實作中,此操作效率非常低。為了確定前一個節點,此方法首先在父節點的子節點列表中執行線性搜尋,以便找到當前節點。
該實作使得操作適合於從已知位置開始的簡短遍歷。但是,要遍歷階層樹中的所有葉節點,您應使用 depthFirstEnumeration 來列舉階層樹中的節點,並對每個節點執行 isLeaf 確定哪些是葉節點。
depthFirstEnumeration(),
isLeaf()public int getLeafCount()
1。此方法花費時間為 O(n),其中 n 表示此節點的後代數。
isNodeAncestor(javax.swing.tree.TreeNode)public String toString()
toString() 發送到此節點的使用者物件的結果,如果此節點沒有使用者物件,則返回 null。
Object 中的 toStringgetUserObject()public Object clone()
Object 中的 cloneCloneable
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
| 上一個類別 下一個類別 | 框架 無框架 | |||||||||
| 摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 | |||||||||
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。