Swing/TreeCellEditorNodeIcon のバックアップ(No.3)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - Visual を表示
 - ソース を表示
 - Swing/TreeCellEditorNodeIcon へ行く。
  
- 1 (2017-02-20 (月) 19:40:38)
 - 2 (2017-02-28 (火) 17:51:53)
 - 3 (2017-12-01 (金) 13:26:35)
 - 4 (2018-02-15 (木) 14:23:42)
 - 5 (2019-07-30 (火) 13:52:31)
 - 6 (2021-03-30 (火) 11:08:39)
 - 7 (2025-01-03 (金) 08:57:02)
 - 8 (2025-01-03 (金) 09:01:23)
 - 9 (2025-01-03 (金) 09:02:38)
 - 10 (2025-01-03 (金) 09:03:21)
 - 11 (2025-01-03 (金) 09:04:02)
 - 12 (2025-06-19 (木) 12:41:37)
 - 13 (2025-06-19 (木) 12:43:47)
 
 
- category: swing folder: TreeCellEditorNodeIcon title: JTreeのノードを編集中に表示するアイコンを変更する tags: [JTree, Icon, DefaultTreeCellEditor, DefaultTreeCellRenderer] author: aterai pubdate: 2016-12-05T02:23:19+09:00 description: JTreeのノードが編集開始されたときに表示するノードアイコンを変更します。 image: https://drive.google.com/uc?export=view&id=1bjb1mUD5NQcTmyA9lBFKu1Zu5gPs9po_sw
 
概要
JTreeのノードが編集開始されたときに表示するノードアイコンを変更します。
Screenshot

Advertisement
サンプルコード
JTree tree2 = new JTree();
tree2.setEditable(true);
DefaultTreeCellRenderer renderer2 = new DefaultTreeCellRenderer();
renderer2.setOpenIcon(icon);
renderer2.setClosedIcon(icon);
renderer2.setLeafIcon(icon);
tree2.setCellRenderer(renderer2);
JTree tree3 = new JTree();
tree3.setEditable(true);
DefaultTreeCellRenderer renderer3 = new DefaultTreeCellRenderer();
renderer3.setOpenIcon(new ColorIcon(Color.GREEN));
renderer3.setClosedIcon(new ColorIcon(Color.BLUE));
renderer3.setLeafIcon(new ColorIcon(Color.ORANGE));
tree3.setCellRenderer(renderer2);
tree3.setCellEditor(new DefaultTreeCellEditor(tree3, renderer3));
View in GitHub: Java, Kotlin解説
- 左
DefaultTreeCellRenderer#getTreeCellRendererComponent(...)をオーバーライドし、内部でsetIcon(icon)メソッドを使用してノードアイコンを変更- ノード編集中はデフォルトのアイコンが表示される
 
 - 中
DefaultTreeCellRenderer#setOpenIcon(...)、DefaultTreeCellRenderer#setClosedIcon(...)、DefaultTreeCellRenderer#setLeafIcon(...)メソッドを使用してアイコンを変更したTreeCellRendererをJTree#setCellRenderer(...)メソッドで設定- ノード編集中は
DefaultTreeCellEditorが上記のTreeCellRendererからアイコンを取得するため、編集中も同じアイコンが表示される 
 - 右
DefaultTreeCellRenderer#setOpenIcon(...)、DefaultTreeCellRenderer#setClosedIcon(...)、DefaultTreeCellRenderer#setLeafIcon(...)メソッドを使用してアイコンを変更したTreeCellRendererをJTree#setCellRenderer(...)メソッドで設定DefaultTreeCellEditorで使用するTreeCellRendererを表示用とは異なるアイコンを設定し、JTree#setCellEditor(...)メソッドで設定ているため、編集中は異なるアイコンが表示される