Swing/AsksAllowsChildren のバックアップの現在との差分(No.9)
- category: swing folder: AsksAllowsChildren title: JTreeで葉ノードが存在しない親ノードの描画を変更する tags: [JTree, DefaultTreeModel, DefaultMutableTreeNode, Icon] author: aterai pubdate: 2014-09-22T00:06:58+09:00 description: JTreeの親ノードに子として葉ノードがひとつも存在しない場合でも、フォルダアイコン表示になるよう設定します。 image:
概要
JTree
の親ノードに子として葉ノードがひとつも存在しない場合でも、フォルダアイコン表示になるよう設定します。
Screenshot
Advertisement
サンプルコード
DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.setAsksAllowsChildren(true);
View in GitHub: Java, Kotlin解説
- 左:
DefaultTreeModel#setAsksAllowsChildren(false)
-
DefaultTreeModel#setAsksAllowsChildren(false)
- デフォルト
DefaultMutableTreeNode
が親ノード(DefaultMutableTreeNode#getAllowsChildren() == true
)であっても子として葉ノードがひとつも存在しない場合、そのアイコンは葉ノードアイコンになるJTree
にTreeWillExpandListener
を追加し、この親ノード(葉ノードが存在しない)をマウスでクリックしてもtreeWillExpand(...)
は発生しない
- 右:
DefaultTreeModel#setAsksAllowsChildren(true)
(チェックボックスで選択した場合) -
DefaultTreeModel#setAsksAllowsChildren(true)
(チェックボックスで選択した場合)DefaultMutableTreeNode
が親ノード(DefaultMutableTreeNode#getAllowsChildren() == true
)の場合、子として葉ノードが存在するかどうかにかかわらずそのアイコンは親ノードアイコンになるJTree
にTreeWillExpandListener
を追加し、この親ノード(葉ノードが存在しない)をクリックするとtreeWillExpand(...)
が発生する- このタイミングで後からこの親ノードに子ノードを追加するといった処理が可能になる
参考リンク
- DefaultTreeModel#setAsksAllowsChildren(boolean) (Java Platform SE 8)
- DefaultTreeModel#isLeaf(...) (Java Platform SE 8)で
askAllowsChildren
とs
が抜けて誤字になっている