• title: JTreeの葉ノードだけ編集可能にする tags: [JTree, TreeCellEditor, TreeNode] author: aterai pubdate: 2010-04-12T18:23:41+09:00 description: JTreeの葉ノードだけ編集可能にします。

概要

JTreeの葉ノードだけ編集可能にします。

サンプルコード

class LeafTreeCellEditor extends DefaultTreeCellEditor {
  public LeafTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
    super(tree, renderer);
  }
  @Override public boolean isCellEditable(java.util.EventObject e) {
    boolean b = super.isCellEditable(e);
    Object o = tree.getLastSelectedPathComponent();
    if(b && o instanceof TreeNode) {
      return ((TreeNode)o).isLeaf();
    }else{
      return b;
    }
  }
}
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、CellEditor#isCellEditableメソッドを葉ノードの場合だけ、編集を開始できるようにオーバーライドしたセルエディタを作成、設定しています。

tree.setCellEditor(new LeafTreeCellEditor(tree, (DefaultTreeCellRenderer)tree.getCellRenderer()));

ルートノードなどの枝ノードは、トリプルクリックしても編集不可になっています。

参考リンク

コメント