将JTree的每个节点设置成不同的图标



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;  
    }  
  
}  

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);  
    }  
  
}  


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值