Swing/PreventNodeExpanding のバックアップ差分(No.5)
- バックアップ一覧
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/PreventNodeExpanding へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: PreventNodeExpanding title: JTreeで展開不可のノードを設定する tags: [JTree, TreeWillExpandListener, File] author: aterai pubdate: 2014-01-27T00:45:37+09:00 description: JTreeで特定のノードだけ展開できないように設定します。 image: https://lh4.googleusercontent.com/-WcBsEg_mxgc/UuUbyvn84EI/AAAAAAAAB-0/iZ6t8_EGeZQ/s800/PreventNodeExpanding.png --- * 概要 [#s658b7b2] * 概要 [#summary] `JTree`で特定のノードだけ展開できないように設定します。 #download(https://lh4.googleusercontent.com/-WcBsEg_mxgc/UuUbyvn84EI/AAAAAAAAB-0/iZ6t8_EGeZQ/s800/PreventNodeExpanding.png) * サンプルコード [#a2d19b1b] * サンプルコード [#sourcecode] #code(link){{ class DirectoryExpandVetoListener implements TreeWillExpandListener { @Override public void treeWillExpand(TreeExpansionEvent e) throws ExpandVetoException { TreePath path = e.getPath(); Object o = path.getLastPathComponent(); if(o instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode node = (DefaultMutableTreeNode)o; File file = (File)node.getUserObject(); if (o instanceof DefaultMutableTreeNode) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) o; File file = (File) node.getUserObject(); String title = file.getName(); System.out.println(title); if(title.startsWith(".")) { if (title.startsWith(".")) { throw new ExpandVetoException(e, "Tree expansion cancelled"); } } } @Override public void treeWillCollapse(TreeExpansionEvent e) throws ExpandVetoException {} } }} * 解説 [#kffe6e96] * 解説 [#explanation] - `TreeWillExpandListener`を実装し、`treeWillExpand(...)`メソッド内で、ノード(`File`)の名前がドットで始まる場合、`ExpandVetoException`を投げて展開をキャンセル -- これらのノードは展開は不可だが、選択自体は可能 - `DefaultTreeCellRenderer#getTreeCellRendererComponent(...)`内で、名前がドットで始まる場合、そのノードを`setEnabled(false)`で無効状態にして描画 * 参考リンク [#uf2330a5] * 参考リンク [#reference] - [http://docs.oracle.com/javase/tutorial/uiswing/events/treewillexpandlistener.html How to Write a Tree-Will-Expand Listener (The Java™ Tutorials > Creating a GUI With JFC/Swing > Writing Event Listeners)] * コメント [#jee1557e] * コメント [#comment] #comment #comment