原文: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);
}

}

Java Jtree渲染叶子实现可以添加swing组件相关推荐

  1. JAVA项目:flappy_bird基于JAVASE和SWING组件

    项目结构 开发流程 游戏窗口的绘制: 在main包下创建一个GameFrame类: public class GameFrame extends Frame {//构造方法中初始化一些参数public ...

  2. java jai例子_java – 使用JAI将swing组件写入大型TIFF图像

    我不得不加载并存储一个大的tiff(59392x40192px)与JAI.我的解决方案是:TiledImages. 我使用了TiledImage,因为我需要tile和subimages. 要使用Til ...

  3. java Swing组件总结

    文章目录 Jframe JDialog JPanel和JScrollPane容器 文本组件 按钮组件 1.JCheckBox 2.JRadionButton JComboBox组件 菜单组件 1.下拉 ...

  4. java swing 组件渲染过程_Java Swing无法正确渲染

    我一直在做一个项目 . 在项目的一部分,我需要在JPanel上绘制 . Graphics2D对象被传递给框架的模型部分,模型将绘制在该实例中绘制的任何内容 . 问题是JFrame未正确呈现 . 它看起 ...

  5. java se 动态添加视图组件_博为峰Java技术题 ——JavaSE Java Swing在顶层容器中添加菜单栏Ⅰ...

    下面将讲述如何在顶层容器中添加菜单栏.下面将通过编写一段Swing程序代码来讲解如何在顶层容器中添加菜单栏.其代码如下: publicclassBWFSwingMenu { staticintwidt ...

  6. (JAVA)使用swing组件模仿QQ界面+网络编程实现QQ消息传输

    直接贴当时的实验报告吧. 1.课程题目 模仿腾讯QQ实现一个即时聊天软件,可以进行好友管理以及私聊等功能. 1.1功能性分类 功能类别 功能名称.标识符 描述 用户信息 用户登陆 用户登陆 用户注册 ...

  7. 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条

    http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...

  8. java swing控件大全_java swing 组件大全(新手快进)

    import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; import  ...

  9. java swing 组件技术(上)

    2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...

最新文章

  1. python编程到底难不难_养成下面几个编程习惯,学习python并不难!
  2. 口令即漏洞 放弃它吧
  3. 如何实现ios屏幕的横竖屏自适应
  4. XDR3020 WiFi6 11ax使用体验 11ax性能数据
  5. caliop 数据可视化_星载激光雷达CALIOP数据处理算法概述
  6. python自带的sum()函数和numpy库中的sum()函数的区别
  7. Spring什么是复杂对象
  8. 动态网页开发基础【笔记】
  9. poj3190 区间贪心 挑战程序设计竞赛
  10. MATLAB中矩阵与数组的区别,点运算符的运用
  11. STM103单片机串口输出函数printf重映射
  12. SAP固定资产业务场景及方案
  13. css3线性渐变怎么写,CSS3线性渐变指南
  14. Qt制作简易电子相册
  15. 神经元的细胞体位于哪里,神经在人体的什么部位
  16. 会议选座位php,会议室座次(会议座位怎么排位)
  17. seLinux的管理
  18. 协鑫集成的这款组件,真的很适合农光互补!
  19. 为什么网络安全缺口很大,而招聘却很少?
  20. [每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置

热门文章

  1. Design Pattern - Bridge(C#)
  2. EGLImage与纹理
  3. java文件格式_Java Class文件格式详解
  4. python 运行pyc_python项目运行后产生__pycache__包含pyc格式文件
  5. pilt图像处理_Python用Pillow(PIL)进行简单的图像操作
  6. JavaScript面向对象及原型 及setTimeout
  7. oracle阻塞查询,oracle 查询阻塞的sql语句
  8. 计算机会计学ufo报表,计算机会计实践部分工资管理系统.ppt
  9. linux redis ruby,redis requires ruby version 2.2.2的解决方案
  10. oracle 行级死锁_ORACLE死锁的分类