JTreeの葉ノードだけ編集可能にする
Total: 6085
, Today: 2
, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JTree
のノードラベル編集が、葉ノードの場合だけ可能になるよう設定します。
Screenshot

Advertisement
Source Code Examples
class LeafTreeCellEditor extends DefaultTreeCellEditor {
protected LeafTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
super(tree, renderer);
}
@Override public boolean isCellEditable(EventObject e) {
Object o = tree.getLastSelectedPathComponent();
if (super.isCellEditable(e) && o instanceof TreeNode) {
return ((TreeNode) o).isLeaf();
} else {
return false;
}
}
}
View in GitHub: Java, KotlinExplanation
上記のサンプルでは、CellEditor#isCellEditable(...)
メソッドをオーバーライドして葉ノードのみ編集が可能にしたセルエディタを作成し、これを以下のようにJTree#setCellEditor(...)
メソッドで設定しています。
tree.setCellEditor(
new LeafTreeCellEditor(tree, (DefaultTreeCellRenderer) tree.getCellRenderer()));
Reference
- CellEditor#isCellEditable(EventObject) (Java Platform SE 8)
- Swing - How can I persist all changes I made to these edited leaves and nodes??