Java Jtree渲染叶子实现可以添加swing组件

原文:http://blog.csdn.net/cuiyaoqiang/article/details/46360537

这里写图片描述 
效果如上图


import Java.awt.Color; 
import java.awt.Component; 
import java.awt.Dimension;

import javax.swing.JPanel; 
import javax.swing.JTree; 
import javax.swing.plaf.ColorUIResource; 
import javax.swing.tree.DefaultMutableTreeNode; 
import javax.swing.tree.TreeCellRenderer;

/** 
* 树的渲染工具类,实现了将组件挂到树上 
* @author 崔耀强 20150507 
* @version 1.1 
* */

public class TreeComponentRenderer extends JPanel implements TreeCellRenderer { 
private static final long serialVersionUID = 1L; 
private TreeComponent button; 
private DefaultMutableTreeNode root;

/**
 * @param button 需要挂到树上的组件
 * @param root 树的根节点
 */
public TreeComponentRenderer(TreeComponent button,DefaultMutableTreeNode root) {
    setLayout(null);
    //button = new MyComponentUI2();
    this.button=button;
    this.root=root;
    add(button);
}

public Component getTreeCellRendererComponent(JTree tree, Object value,
        boolean isSelected, boolean expanded, boolean leaf, int row,
        boolean hasFocus) {
    DefaultMutableTreeNode root2=(DefaultMutableTreeNode) value;
    if(leaf&&!root2.getParent().equals(root)){
        Equipment o= (Equipment) root2.getUserObject();
        if(o.getEquipmentType().getImgUrl()!=null){
            //UNDO  分组
            if(o.getEquipmentType().getIsGroup()==0){
                button.setPreferredSize(new Dimension(TreeComponent.compUI2Width,TreeComponent.compUI2Hight));
                //CD4组
                button.setLableText(o.getEquipmentType().getName()+"组");
                button.setLableImage(o.getEquipmentType().getImgUrl());
                button.setTextFiledText(o.getEquipmentType().getNum()+"");
                button.setTextFiledBackGround(Color.lightGray);
                button.setJlBackGround(Color.gray);
            }else{

                button.setPreferredSize(new Dimension(TreeComponent.compUI2Width,TreeComponent.compUI2Hight));
                button.setLableText(o.getId()+"");
                button.setLableImage(o.getEquipmentType().getImgUrl());
                button.setTextFiledText(o.getLocation());
                button.setTextFiledBackGround(Color.lightGray);
                button.setJlBackGround(Color.gray);
            }
        }
        return this;
    }   else{
        EquipmentType o= (EquipmentType) root2.getUserObject();
        if(o.getImgUrl()!=null){
            button.setPreferredSize(new Dimension( TreeComponent.compUI2Width,TreeComponent.compUI2Hight));
            button.setLableText(o.getName());
            button.setLableImage(o.getImgUrl());
            button.setTextFiledText(o.getNum()+"");
            button.setTextFiledBackGround(Color.lightGray);
            button.setJlBackGround(Color.gray);
        }
        return this;
    }
}
@Override
public Dimension getPreferredSize() {
    Dimension d_button = button.getPreferredSize();
    return new Dimension(d_button.width ,
            ( d_button.height));
}
@Override
public void doLayout() {
    Dimension d_button = button.getPreferredSize();
    button.setBounds(4, 0,d_button.width, d_button.height );
} 
//设置叶子的背景颜色
public void setBackground(Color color) {
    if (color instanceof ColorUIResource)
        color = null;
    super.setBackground(color);
} 

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值