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
で 選択されたノードの数について分岐しています。 そして、 子のノードを持ちうる場合のみノードを展開するようにしています。