Swing/LeafTreeCellEditor のバックアップの現在との差分(No.9)
- category: swing folder: LeafTreeCellEditor title: JTreeの葉ノードだけ編集可能にする tags: [JTree, TreeCellEditor, TreeNode] author: aterai pubdate: 2010-04-12T18:23:41+09:00 description: JTreeのノードラベル編集が、葉ノードの場合だけ可能になるよう設定します。 image:
概要
JTree
のノードラベル編集が、葉ノードの場合だけ可能になるよう設定します。
Screenshot
Advertisement
サンプルコード
class LeafTreeCellEditor extends DefaultTreeCellEditor {
protected LeafTreeCellEditor(JTree tree, DefaultTreeCellRenderer renderer) {
super(tree, renderer);
}
#spanadd
#spanend
@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, Kotlin解説
上記のサンプルでは、CellEditor#isCellEditable(...)
メソッドをオーバーライドし、葉ノードの場合だけ編集が可能にしたセルエディタを作成し、これをJTree#setCellEditor(...)
で設定しています。
上記のサンプルでは、CellEditor#isCellEditable(...)
メソッドをオーバーライドして葉ノードのみ編集が可能にしたセルエディタを作成し、これを以下のようにJTree#setCellEditor(...)
メソッドで設定しています。
#spandel
tree.setCellEditor(new LeafTreeCellEditor(tree, (DefaultTreeCellRenderer) tree.getCellRenderer()));
#spanend
#spanadd
tree.setCellEditor(
#spanend
new LeafTreeCellEditor(tree, (DefaultTreeCellRenderer) tree.getCellRenderer()));
参考リンク
- CellEditor#isCellEditable(EventObject) (Java Platform SE 8)
- Swing - How can I persist all changes I made to these edited leaves and nodes??