概要

JTreeの親ノードに子として葉ノードがひとつも存在しない場合でも、フォルダアイコン表示になるよう設定します。

サンプルコード

DefaultTreeModel model = (DefaultTreeModel) tree.getModel();
model.setAsksAllowsChildren(true);
view all

解説

  • 左: DefaultTreeModel#setAsksAllowsChildren(false)
    • デフォルト
    • DefaultMutableTreeNodeが親ノード(DefaultMutableTreeNode#getAllowsChildren() == true)であっても、子として葉ノードがひとつも存在しない場合、そのアイコンは、葉ノードアイコンになる
    • JTreeTreeWillExpandListenerなどを追加し、この親ノード(葉ノードが存在しない)をクリックした場合、treeWillExpand(...)は発生しない
  • 右: DefaultTreeModel#setAsksAllowsChildren(true) (チェックボックスで選択した場合)
    • DefaultMutableTreeNodeが親ノード(DefaultMutableTreeNode#getAllowsChildren() == true)の場合、子として葉ノードが存在するかどうかにかかわらず、そのアイコンは、親ノードアイコンになる
    • JTreeTreeWillExpandListenerなどを追加し、この親ノード(葉ノードが存在しない)をクリックした場合、treeWillExpand(...)が発生する(このタイミングで後からノードを追加するといった処理が可能になる)

コメント