Java の Swing JTree で、 特定のノードを展開した状態にする方法です。
サンプルコード
|
1 |
tree1.expandPath(new TreePath(selectedNode.getPath())); |
JTree オブジェクト の expandPath メソッド を使います。 ここで selectedNode は DefaultMutableTreeNode クラス のオブジェクトです。
expandPath メソッド の引数は TreePath なので、 new TreePath(selectedNode.getPath) で TreePath オブジェクト を作成してメソッドに渡します。
発展
選択されたノードを自動で展開するコードです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
tree1.addTreeSelectionListener(new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent treeSelectionEvent) { TreePath[] paths = treeSelectionEvent.getPaths(); switch (tree1.getSelectionCount()) { case 0: break; case 1: DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode) tree1.getLastSelectedPathComponent(); if (selectedNode.getAllowsChildren()) tree1.expandPath(new TreePath(selectedNode.getPath())); break; default: break; } } }); |
JTree のデフォルトでは 複数のノードを選択することもできますので、 switch で 選択されたノードの数について分岐しています。 そして、 子のノードを持ちうる場合のみノードを展開するようにしています。