MyDefaultTreeCellRenderer.java
TreeIconDemo.java
- import java.awt.Component;
- import javax.swing.ImageIcon;
- import javax.swing.JTree;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeCellRenderer;
- /**
- * 自定义树描述类,将树的每个节点设置成不同的图标
- * @author RuiLin.Xie - xKF24276
- *
- */
- public class MyDefaultTreeCellRenderer extends DefaultTreeCellRenderer
- {
- /**
- * ID
- */
- private static final long serialVersionUID = 1L;
- /**
- * 重写父类DefaultTreeCellRenderer的方法
- */
- @Override
- public Component getTreeCellRendererComponent(JTree tree, Object value,
- boolean sel, boolean expanded, boolean leaf, int row,
- boolean hasFocus)
- {
- //执行父类原型操作
- super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
- row, hasFocus);
- setText(value.toString());
- if (sel)
- {
- setForeground(getTextSelectionColor());
- }
- else
- {
- setForeground(getTextNonSelectionColor());
- }
- //得到每个节点的TreeNode
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
- //得到每个节点的text
- String str = node.toString();
- //判断是哪个文本的节点设置对应的值(这里如果节点传入的是一个实体,则可以根据实体里面的一个类型属性来显示对应的图标)
- if (str == "a")
- {
- this.setIcon(new ImageIcon("treeimg/a.GIF"));
- }
- if (str == "b")
- {
- this.setIcon(new ImageIcon("treeimg/b.GIF"));
- }
- if (str == "c")
- {
- this.setIcon(new ImageIcon("treeimg/c.GIF"));
- }
- return this;
- }
- }
TreeIconDemo.java
- import java.awt.BorderLayout;
- import javax.swing.JFrame;
- import javax.swing.JScrollPane;
- import javax.swing.JTree;
- import javax.swing.tree.DefaultMutableTreeNode;
- import javax.swing.tree.DefaultTreeModel;
- public class TreeIconDemo extends JFrame
- {
- /**
- * ID
- */
- private static final long serialVersionUID = 1L;
- private JTree tree;
- /**
- * Launch the application
- *
- * @param args
- */
- public static void main(String args[])
- {
- try
- {
- TreeIconDemo frame = new TreeIconDemo();
- frame.setVisible(true);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- /**
- * Create the frame
- */
- public TreeIconDemo()
- {
- super();
- setBounds(100, 100, 500, 375);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- final JScrollPane scrollPane = new JScrollPane();
- getContentPane().add(scrollPane, BorderLayout.CENTER);
- tree = new JTree();
- scrollPane.setViewportView(tree);
- //创建数据
- DefaultTreeModel defaultTreeModel = createModel();
- //设置数据
- tree.setModel(defaultTreeModel);
- //设置自定义描述类
- tree.setCellRenderer(new MyDefaultTreeCellRenderer());
- }
- /**
- * 创建树节点模型
- * @return
- */
- public DefaultTreeModel createModel()
- {
- DefaultMutableTreeNode root = new DefaultMutableTreeNode("a");
- DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");
- DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");
- root.add(b);
- root.add(c);
- return new DefaultTreeModel(root);
- }
- }