Swing/AsksAllowsChildren の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/AsksAllowsChildren へ行く。
- Swing/AsksAllowsChildren の差分を削除
--- category: swing folder: AsksAllowsChildren title: JTreeで葉ノードが存在しない親ノードの描画を変更する tags: [JTree, DefaultTreeModel, DefaultMutableTreeNode, Icon] author: aterai pubdate: 2014-09-22T00:06:58+09:00 description: JTreeの親ノードに子として葉ノードがひとつも存在しない場合でも、フォルダアイコン表示になるよう設定します。 image: https://lh6.googleusercontent.com/-vfEqezCRy2w/VB7mN-AcppI/AAAAAAAACNg/VkZLdGkiDRQ/s800/AsksAllowsChildren.png --- * 概要 [#summary] `JTree`の親ノードに子として葉ノードがひとつも存在しない場合でも、フォルダアイコン表示になるよう設定します。 #download(https://lh6.googleusercontent.com/-vfEqezCRy2w/VB7mN-AcppI/AAAAAAAACNg/VkZLdGkiDRQ/s800/AsksAllowsChildren.png) * サンプルコード [#sourcecode] #code(link){{ DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); model.setAsksAllowsChildren(true); }} * 解説 [#explanation] - `DefaultTreeModel#setAsksAllowsChildren(false)` -- デフォルト -- `DefaultMutableTreeNode`が親ノード(`DefaultMutableTreeNode#getAllowsChildren() == true`)であっても子として葉ノードがひとつも存在しない場合、そのアイコンは葉ノードアイコンになる -- `JTree`に`TreeWillExpandListener`を追加し、この親ノード(葉ノードが存在しない)をマウスでクリックしても`treeWillExpand(...)`は発生しない - `DefaultTreeModel#setAsksAllowsChildren(true)`(チェックボックスで選択した場合) -- `DefaultMutableTreeNode`が親ノード(`DefaultMutableTreeNode#getAllowsChildren() == true`)の場合、子として葉ノードが存在するかどうかにかかわらずそのアイコンは親ノードアイコンになる -- `JTree`に`TreeWillExpandListener`を追加し、この親ノード(葉ノードが存在しない)をクリックすると`treeWillExpand(...)`が発生する --- このタイミングで後からこの親ノードに子ノードを追加するといった処理が可能になる * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultTreeModel.html#setAsksAllowsChildren-boolean- DefaultTreeModel#setAsksAllowsChildren(boolean) (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/javax/swing/tree/DefaultTreeModel.html#isLeaf-java.lang.Object- DefaultTreeModel#isLeaf(...) (Java Platform SE 8)]で`askAllowsChildren`と`s`が抜けて誤字になっている -- [https://bugs.openjdk.java.net/browse/JDK-8037573 [JDK-8037573] Typo in DefaultTreeModel docs: askAllowsChildren instead of asksAllowsChildren - Java Bug System]で修正される予定 -- [https://bugs.openjdk.org/browse/JDK-8037573 [JDK-8037573] Typo in DefaultTreeModel docs: askAllowsChildren instead of asksAllowsChildren - Java Bug System]で修正される予定 * コメント [#comment] #comment #comment