DefaultMutableTreeNodeの組み込み
サンプルでは、実際にDefaultMutableTreeNodeを使っていくつかの項目(ノードと呼ばれます)を作成し、組み込んだところです。ここでは、ノードを作成している部分をgetRootNodeというメソッドに切り分けてあります。このメソッドを見てみましょう。
private MutableTreeNode getRootNode(){
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode sub_a = new DefaultMutableTreeNode("Sub Node-A");
root.add(sub_a);
DefaultMutableTreeNode sub_b = new DefaultMutableTreeNode("Sub Node-B");
root.add(sub_b);
sub_a.add(new DefaultMutableTreeNode("Sub Node-A-1"));
sub_a.add(new DefaultMutableTreeNode("Sub Node-A-2"));
sub_b.add(new DefaultMutableTreeNode("Sub Node-B-1"));
sub_b.add(new DefaultMutableTreeNode("Sub Node-B-2"));
return root;
}
DefaultMutableTreeNodeは、一番土台となる部分(ルートと呼びます)のノードが1つあり、この下にノードを追加していく、という形でデータ全体を構築していきます。従って、まず、ルートのノードを作成します。
new DefaultMutableTreeNodeでは、表示する値を引数に指定してインスタンス作成をします。作成後、そのノードを組み込むノードのaddメソッドを呼び出して組み込みます。このaddは、そのノードの下にノードを組み込むためのものです。例えば、add( A )、add( B )というように実行すると、実際の表示画面ではそのノードの中に、「A」「B」の順に組み込んだノードが表示されます。
[DefaultMutableTreeNode].add([DefaultMutableTreeNode]);
このように、DefaultMutableTreeNodeを引数に指定すると、自身の下にこのノードを付け足すわけですね。
よく勘違いをしてしまうのですが、このノードの組み込みは、「自身の下にノードを取り付ける」ということしかできません。例えば、あるノード内に「A」「B」とノードが並んでいて、この下に「C」というノードを表示させよう、という場合、「B」のノードに「同じ位置にノードを組み込む」ようなメソッドを探しても、そんなものはないのです。これは、その「A」「B」といったノードが組み込まれている親のノードに対して、新たに「C」ノードをaddすることでできます。あくまで「親ノードに子ノードを組み込む」という形でしかノードの組み込みは行えない、という点を忘れないでください。
DefaultMutableTreeNodeには、addの他に、任意の位置に組み込むinsertや、ノードを取り外すremoveといったものも用意されています。
[DefaultMutableTreeNode].insert([DefaultMutableTreeNode],[index番号]);
[DefaultMutableTreeNode].remove([index番号]);
[DefaultMutableTreeNode].remove([DefaultMutableTreeNode]);
insertは、既にいくつかのノードが組み込まれているときにその途中に新しいノードを割り込ませたいときに用います。またremoveは、あくまで「組み込み状態」に関するものであり、そのノード自体を削除するわけではありません。ノード自体はremove後もインスタンスが存在する限りちゃんと残っています。