Swing/ExpandsSelectedPaths のバックアップの現在との差分(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ExpandsSelectedPaths へ行く。
- 1 (2012-09-24 (月) 13:08:25)
- 2 (2012-12-07 (金) 16:03:45)
- 3 (2013-08-17 (土) 15:35:01)
- 4 (2014-09-24 (水) 17:29:54)
- 5 (2015-10-21 (水) 16:59:56)
- 6 (2017-04-19 (水) 15:45:43)
- 7 (2017-08-22 (火) 15:31:48)
- 8 (2018-02-23 (金) 13:12:38)
- 9 (2020-03-04 (水) 16:38:20)
- 10 (2021-08-12 (木) 14:12:01)
- 11 (2022-10-07 (金) 17:30:52)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JTreeの選択されたノードを展開する #navi(../) RIGHT:Posted by [[aterai]] at 2012-09-24 *JTreeの選択されたノードを展開する [#fdd0db61] JTreeの選択されたノードまでのパスをすべて展開して可視状態にします。 --- category: swing folder: ExpandsSelectedPaths title: JTreeの選択されたノードを展開する tags: [JTree, TreePath] author: aterai pubdate: 2012-09-24T13:08:25+09:00 description: JTreeの選択されたノードまでのパスをすべて展開して可視状態にします。 image: https://lh6.googleusercontent.com/-sOsnOftT8xE/UF_b7dSxzQI/AAAAAAAABS0/i_xYkTfxbZg/s800/ExpandsSelectedPaths.png --- * 概要 [#summary] `JTree`の選択されたノードまでのパスをすべて展開して可視状態にします。 -&jnlp; -&jar; -&zip; #download(https://lh6.googleusercontent.com/-sOsnOftT8xE/UF_b7dSxzQI/AAAAAAAABS0/i_xYkTfxbZg/s800/ExpandsSelectedPaths.png) //#screenshot #ref(https://lh6.googleusercontent.com/-sOsnOftT8xE/UF_b7dSxzQI/AAAAAAAABS0/i_xYkTfxbZg/s800/ExpandsSelectedPaths.png) * サンプルコード [#sourcecode] #code(link){{ // tree.setExpandsSelectedPaths(true); JTextField textField = new JTextField("soccer"); JButton button = new JButton("Select"); button.addActionListener(e -> { String q = textField.getText().trim(); searchTree(tree1, tree1.getPathForRow(0), q); searchTree(tree2, tree2.getPathForRow(0), q); }); // ... **サンプルコード [#pffd84f2] #code(link){{ tree.setExpandsSelectedPaths(true); private static void searchTree(JTree tree, TreePath path, String q) { Object o = path.getLastPathComponent(); if (o instanceof TreeNode) { TreeNode node = (TreeNode) o; if (node.toString().equals(q)) { tree.addSelectionPath(path); } if (!node.isLeaf()) { // Java 9: Collections.list(node.children()) Collections.list((Enumeration<?>) node.children()) .forEach(n -> searchTree(tree, path.pathByAddingChild(n), q)); } } } }} **解説 [#s84ec3a0] - JTree#setExpandsSelectedPaths(false); -- ノード選択を変更しても親パスを展開しない - JTree#setExpandsSelectedPaths(true); -- デフォルト(JDK 1.3 から) -- マウスによる選択ではない、JTree#addSelectionPath(TreePath)などによるノード選択が行われた場合、選択されたノードまでのパスをすべて展開して可視化(スクロールはしない) * 解説 [#explanation] 上記のサンプルでは、マウスによるノード選択ではなく`JTree#addSelectionPath(TreePath)`などによるノード選択が行われた場合にそのノードまでのパスを展開するかどうかを`JTree#setExpandsSelectedPaths(...)`メソッドを使って切り替えるテストを行っています。 **参考リンク [#ia19db6d] - `JTree#setExpandsSelectedPaths(false)` -- ノード選択を変更しても親パスが閉じている場合は展開しない - `JTree#setExpandsSelectedPaths(true)` -- `Java 1.3`からのデフォルト -- 選択されたノードまでのパスをすべて展開して可視化(スクロールはしない) * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/1.3/guide/swing/JTreeChanges.html JTree の expandsSelectedPaths 新規プロパティおよび removeDescendantSelectedPaths 新規メソッド] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/JTree.html#setExpandsSelectedPaths-boolean- JTree#setExpandsSelectedPaths(boolean) (Java Platform SE 8)] - [[JTreeのノードを検索する>Swing/SearchBox]] **コメント [#l42b97e5] * コメント [#comment] #comment #comment