import java.awt.GridLayout; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JTree; import javax.swing.SwingUtilities; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; public class CustomTreeIcons { public CustomTreeIcons(){ JFrame frame = new JFrame("Custom Tree Icons"); frame.setLayout(new GridLayout(1,1)); frame.add(initTree()); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setLocationRelativeTo(null); frame.setVisible(true); } private JTree initTree(){ DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root"); root.add(new DefaultMutableTreeNode("Blatt 1")); root.add(new DefaultMutableTreeNode("Blatt 2")); DefaultTreeModel model = new DefaultTreeModel(root); JTree tree = new JTree(model); tree.setCellRenderer(new MyCellRenderer()); return tree; } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new CustomTreeIcons()); } } class MyCellRenderer extends DefaultTreeCellRenderer { public MyCellRenderer(){ openIcon = createImageIcon("img/open.png"); closedIcon = createImageIcon("img/closed.png"); leafIcon = createImageIcon("img/leaf.png"); } protected ImageIcon createImageIcon(String path) { java.net.URL imgURL = getClass().getClassLoader().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } System.err.println(path + " nicht gefunden!"); return null; } }