|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.swing.tree.DefaultMutableTreeNode
DefaultMutableTreeNode
は、ツリーデータ構造の汎用ノードです。デフォルトの可変ツリーノードの使用例は、「The Java Tutorial」の「How to Use Trees」を参照してください。
ツリーノードは最大 1 つの親と、ゼロ個以上の子を持ちます。DefaultMutableTreeNode
は、ノードの親と子の検査と変更を行うためのオペレーションと、そのノードによって構成されるツリーを検査するオペレーションを提供します。ノードのツリーは、そのノードを起点とする親と子へのすべての可能なリンクをたどって到達できる、すべてのノードから構成されます。親を持たないノードはそのツリーのルートで、子を持たないノードは葉です。ツリーは多数のサブツリーを持つことができ、各ノードはそのサブツリーのルートになります。
このクラスは、ツリーまたはサブツリーをさまざまな順序で効率的にたどる方法や、2 つのノード間のパスをたどるための方法を列挙します。DefaultMutableTreeNode
には、ユーザオブジェクトへの参照、つまりユーザが独自に定義するオブジェクトへの参照も格納できます。DefaultMutableTreeNode
に toString()
を指定してその文字列表現を要求すると、そのユーザオブジェクトの文字列表現を返します。
このクラスはスレッドに対して安全ではありません。複数のスレッドで DefaultMutableTreeNode (つまり、TreeNode のツリー) を使う場合、ユーザ自身が同期を行う必要があります。慣例では、ツリーのルートノードで同期させます。
DefaultMutableTreeNode は MutableTreeNode インタフェースを実装し、MutableTreeNode のあらゆる実装にメソッドを追加できますが、DefaultMutableTreeNode のすべてのメソッドが MutableTreeNode のすべての実装に適用できるとはかぎりません。提供される列挙の一部では特に、そうしたメソッドの一部を使うと、DefaultMutableTreeNode は DefaultMutableNode のインスタンスだけを含む場合があります。TreeNode/MutableTreeNode メソッドはすべて、どの実装が追加されても定義されたように動作します。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。今後の Swing リリースでは、長期間の持続性をサポートする予定です。
MutableTreeNode
, 直列化された形式フィールドの概要 | |
protected boolean |
allowsChildren
ノードが子を持つことができる場合は true です。 |
protected Vector |
children
子たちの配列です。 |
static Enumeration |
EMPTY_ENUMERATION
常に空の列挙です。 |
protected MutableTreeNode |
parent
このノードの親です。 |
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()
このノードの後ろの葉を返します。 |
DefaultMutableTreeNode |
getNextNode()
このノードのツリーの前順走査でこのノードの次にあるノードを返します。 |
DefaultMutableTreeNode |
getNextSibling()
親の子配列にあるこのノードの次の兄弟ウィジェットを返します。 |
TreeNode |
getParent()
このノードの親を返します。 |
TreeNode[] |
getPath()
ルートからこのノードに至るまでのパスを返します。 |
protected TreeNode[] |
getPathToRoot(TreeNode aNode,
int depth)
ルートノードまでを含むノードの親を構築します。 |
DefaultMutableTreeNode |
getPreviousLeaf()
このノードの前の葉を返します。 |
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 がこのノードの下位ノードである場合、つまり、このノード、このノードの複数の子の中の 1 つ、またはその複数の子の中の 1 つの下位ノードである場合は、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)
aChild をこのノードの子配列から削除し、それに null の親を与えます。 |
void |
removeAllChildren()
このノードの子たちをすべて削除し、それらの親を null に設定します。 |
void |
removeFromParent()
このノードをルートにするサブツリーをツリーから削除し、このノードに null の親を与えます。 |
void |
setAllowsChildren(boolean allows)
このノードが子を持つことを許可されるかどうかを設定します。 |
void |
setParent(MutableTreeNode newParent)
このノードの親を newParent に設定しますが、親の子配列は変更しません。 |
void |
setUserObject(Object userObject)
このノードのユーザオブジェクトを userObject に設定します。 |
String |
toString()
toString() をこのノードのユーザオブジェクトに送った結果を返します。 |
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
フィールドの詳細 |
public static final Enumeration EMPTY_ENUMERATION
protected MutableTreeNode parent
protected Vector children
protected transient Object userObject
protected boolean allowsChildren
コンストラクタの詳細 |
public DefaultMutableTreeNode()
public DefaultMutableTreeNode(Object userObject)
userObject
- ユーザが提供する、ノードのデータを構成する Objectpublic DefaultMutableTreeNode(Object userObject, boolean allowsChildren)
userObject
- ユーザが提供する、ノードのデータを構成する ObjectallowsChildren
- ノードが子ノードを持つことを許可される場合は true、そうでない場合は常に葉ノードメソッドの詳細 |
public void insert(MutableTreeNode newChild, int childIndex)
newChild
をその親があればその親から削除し、子の親をこのノードに設定してから、子をこのノードの子配列のインデックス childIndex
に追加します。newChild
は null、およびこのノードの上位ノードにすることはできません。MutableTreeNode
内の insert
newChild
- このノードより下位の部分に挿入する MutableTreeNodechildIndex
- このノードの挿入先である、このノードの子配列のインデックスArrayIndexOutOfBoundsException
- childIndex
が範囲外にある場合IllegalArgumentException
- newChild
が null の場合、またはこのノードの上位ノードである場合IllegalStateException
- このノードが子を許可しない場合isNodeDescendant(javax.swing.tree.DefaultMutableTreeNode)
public void remove(int childIndex)
MutableTreeNode
でなければなりません。MutableTreeNode
内の remove
childIndex
- このノードの子配列で削除する対象の子のインデックスArrayIndexOutOfBoundsException
- childIndex
が範囲外にある場合public void setParent(MutableTreeNode newParent)
newParent
に設定しますが、親の子配列は変更しません。このメソッドは子の親を再び割り当てるために、insert()
と remove()
から呼び出されます。ほかのメソッドからメッセージとして送られることはありません。MutableTreeNode
内の setParent
newParent
- このノードの新しい親public TreeNode getParent()
TreeNode
内の getParent
public TreeNode getChildAt(int index)
TreeNode
内の getChildAt
index
- このノードの子配列のインデックスArrayIndexOutOfBoundsException
- index
が範囲外にある場合public int getChildCount()
TreeNode
内の getChildCount
public int getIndex(TreeNode aChild)
-1
を返します。このメソッドは O(n) の線形探索を実行します。n は子の数です。TreeNode
内の getIndex
aChild
- このノードの複数の子の中から検索する TreeNode-1
IllegalArgumentException
- aChild
が null の場合public Enumeration children()
TreeNode
内の children
public void setAllowsChildren(boolean allows)
allows
が false の場合は、このノードの子はすべて削除されます。
注: デフォルトでは、ノードは子を許可します。
allows
- このノードが子を持つことを許可される場合は truepublic boolean getAllowsChildren()
TreeNode
内の getAllowsChildren
public void setUserObject(Object userObject)
userObject
に設定します。MutableTreeNode
内の setUserObject
userObject
- このノードのユーザ指定のデータを構成する ObjectgetUserObject()
,
toString()
public Object getUserObject()
setUserObject(java.lang.Object)
,
toString()
public void removeFromParent()
MutableTreeNode
内の removeFromParent
public void remove(MutableTreeNode aChild)
aChild
をこのノードの子配列から削除し、それに null の親を与えます。MutableTreeNode
内の remove
aChild
- 削除するこのノードの子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
がこのノードの下位ノードである場合、つまり、このノード、このノードの複数の子の中の 1 つ、またはその複数の子の中の 1 つの下位ノードである場合は、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()
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
の間 (このノードと 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
はこのノードの子でなければなりません。aChild
が最後の子の場合は、null を返します。このメソッドは、このノードの子の O(n) の線形探索を実行して aChild
を探します。n は子の数です。子の配列全体をたどるには、代わりに列挙を使います。aChild
の直後にくるこのノードの子IllegalArgumentException
- aChild
が null の場合、またはこのノードの子でない場合children
public TreeNode getChildBefore(TreeNode aChild)
aChild
の直前にくる子を返します。なお、aChild
はこのノードの子でなければなりません。aChild
が最初の子の場合、null を返します。このメソッドは、このノードの子の O(n) の線形探索を実行して aChild
を探します。n は子の数です。aChild
の直前にくるこのノードの子IllegalArgumentException
- aChild
が null の場合、またはこのノードの子でない場合public boolean isNodeSibling(TreeNode anotherNode)
anotherNode
がこのノードと同じ親を持つ兄弟ウィジェットである場合は true を返します。ノードはそれ自身の兄弟ウィジェットです。anotherNode
が null の場合は、false を返します。anotherNode
- このノードの兄弟ウィジェットであるかどうかを調べるノードanotherNode
がこのノードの兄弟ウィジェットの場合は truepublic int getSiblingCount()
1
を返します。public DefaultMutableTreeNode getNextSibling()
children
public DefaultMutableTreeNode getPreviousSibling()
public boolean isLeaf()
getAllowsChildren
と組み合わせて使います。TreeNode
内の isLeaf
getAllowsChildren()
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
内の toString
getUserObject()
public Object clone()
Object
内の clone
|
JavaTM 2 Platform Std. Ed. v1.3 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.