JTreeのOpenIcon、ClosedIcon、LeafIconを変更
Total: 6378
, Today: 1
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
JTree
のOpenIcon
、ClosedIcon
、LeafIcon
の表示を切り替えます。
Screenshot
Advertisement
サンプルコード
folderCheck.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent e) {
DefaultTreeCellRenderer r = (DefaultTreeCellRenderer) tree.getCellRenderer();
if (((JCheckBox) e.getSource()).isSelected()) {
r.setOpenIcon(r.getDefaultOpenIcon());
r.setClosedIcon(r.getDefaultClosedIcon());
} else {
r.setOpenIcon(emptyIcon);
r.setClosedIcon(emptyIcon);
}
allNodesChanged(tree);
}
});
View in GitHub: Java, Kotlin解説
- 以下のメソッドを使用してデフォルトアイコンと空アイコン(もしくは
null
)を設定し、表示非表示を切り替え - 各アイコンの幅が変化するため表示を切り替えた後ですべてのノードを再評価する必要がある
private static void allNodesChanged(JTree tree) { DefaultTreeModel model = (DefaultTreeModel) tree.getModel(); DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); Enumeration depth = root.depthFirstEnumeration(); while (depth.hasMoreElements()) { model.nodeChanged((TreeNode) depth.nextElement()); } }