下面的程序演示了如何更改JTree组件的默认图标。我们可以更改组件的树形图标,即关闭图标,打开图标和叶子图标。
package org.nhooo.example.swing; import javax.swing.*; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeCellRenderer; import java.awt.*; public class JTreeChangeIcon extends JFrame { public JTreeChangeIcon() throws HeadlessException { intializeUI(); } private void intializeUI() { setSize(200, 400); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); DefaultMutableTreeNode root = new DefaultMutableTreeNode("Address Book"); DefaultMutableTreeNode a = new DefaultMutableTreeNode("A"); DefaultMutableTreeNode b = new DefaultMutableTreeNode("B"); DefaultMutableTreeNode c = new DefaultMutableTreeNode("C"); DefaultMutableTreeNode aContact = new DefaultMutableTreeNode("Alice"); DefaultMutableTreeNode bContact = new DefaultMutableTreeNode("Bob"); DefaultMutableTreeNode cContact = new DefaultMutableTreeNode("Carol"); root.add(a); root.add(b); root.add(c); a.add(aContact); b.add(bContact); c.add(cContact); JTree tree = new JTree(root); // 更改默认的JTree图标 DefaultTreeCellRenderer renderer = (DefaultTreeCellRenderer) tree.getCellRenderer(); Icon closedIcon = new ImageIcon("closed.png"); Icon openIcon = new ImageIcon("open.png"); Icon leafIcon = new ImageIcon("leaf.png"); renderer.setClosedIcon(closedIcon); renderer.setOpenIcon(openIcon); renderer.setLeafIcon(leafIcon); JScrollPane pane = new JScrollPane(tree); pane.setPreferredSize(new Dimension(200, 400)); getContentPane().add(tree); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { new JTreeChangeIcon().setVisible(true); } }); } }