下面的程序演示了如何更改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);
}
});
}
}