Swing/PreventToggleClickNodeExpanding の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/PreventToggleClickNodeExpanding へ行く。
- Swing/PreventToggleClickNodeExpanding の差分を削除
--- category: swing folder: PreventToggleClickNodeExpanding title: JTreeで特定のノードをマウスクリックした場合のみ展開不可に設定する tags: [JTree] author: aterai pubdate: 2019-11-25T12:42:39+09:00 description: JTreeで特定の親ノードをマウスクリックした場合のみ展開・折り畳みを不可に設定します。 image: https://drive.google.com/uc?id=1cFSEIvHIrn8nmolJt9cWlyVen4iEpBjV --- * 概要 [#summary] `JTree`で特定の親ノードをマウスクリックした場合のみ展開・折り畳みを不可に設定します。 #download(https://drive.google.com/uc?id=1cFSEIvHIrn8nmolJt9cWlyVen4iEpBjV) * サンプルコード [#sourcecode] #code(link){{ JTree tree1 = new JTree(treeModel); tree1.addTreeWillExpandListener(new FileExpandVetoListener()); JTree tree2 = new JTree(treeModel); tree2.setUI(new MetalTreeUI() { @Override protected boolean isToggleEvent(MouseEvent e) { File file = getFileFromTreePath(tree.getSelectionPath()); return file == null && super.isToggleEvent(e); } }); }} * 解説 [#explanation] 上記のサンプルでは起動ディレクトリ以下のファイルを`JTree`で一覧表示し、ファイル名が`MainPanel.java`のノードのみマウスクリックで展開不可になるよう設定しています。 - 左: `TreeWillExpandListener` -- [[JTreeで展開不可のノードを設定する>Swing/PreventNodeExpanding]] -- `TreeWillExpandListener`を設定して特定のノードの展開をすべて不可に設定 -- キー入力、ノードのマウスクリック、展開(`+`)・折り畳み(`-`)アイコンのマウスクリック、ポップアップメニューからの展開などのすべてが不可になる - 右: `override MetalTreeUI#isToggleEvent(...)` -- `MetalTreeUI#isToggleEvent(...)`メソッドをオーバーライドして特定ノードのマウスクリックのみ展開を不可に設定 -- キー入力、展開(`+`)・折り畳み(`-`)アイコンのマウスクリックであれば展開可能 -- すべてのノードをキー入力、展開(`+`)・折り畳み(`-`)アイコンのマウスクリックで展開可能、ノードのマウスクリックのみ展開を不可にする場合は`tree.setToggleClickCount(0);`が使用可能 * 参考リンク [#reference] -- [[JTreeで展開不可のノードを設定する>Swing/PreventNodeExpanding]] - [[JTreeで展開不可のノードを設定する>Swing/PreventNodeExpanding]] - [[JTreeのノードを折り畳み不可に設定する>Swing/TreeNodeCollapseVeto]] * コメント [#comment] #comment #comment