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);
}
}
Java Jtree渲染叶子实现可以添加swing组件相关推荐
- JAVA项目:flappy_bird基于JAVASE和SWING组件
项目结构 开发流程 游戏窗口的绘制: 在main包下创建一个GameFrame类: public class GameFrame extends Frame {//构造方法中初始化一些参数public ...
- java jai例子_java – 使用JAI将swing组件写入大型TIFF图像
我不得不加载并存储一个大的tiff(59392x40192px)与JAI.我的解决方案是:TiledImages. 我使用了TiledImage,因为我需要tile和subimages. 要使用Til ...
- java Swing组件总结
文章目录 Jframe JDialog JPanel和JScrollPane容器 文本组件 按钮组件 1.JCheckBox 2.JRadionButton JComboBox组件 菜单组件 1.下拉 ...
- java swing 组件渲染过程_Java Swing无法正确渲染
我一直在做一个项目 . 在项目的一部分,我需要在JPanel上绘制 . Graphics2D对象被传递给框架的模型部分,模型将绘制在该实例中绘制的任何内容 . 问题是JFrame未正确呈现 . 它看起 ...
- java se 动态添加视图组件_博为峰Java技术题 ——JavaSE Java Swing在顶层容器中添加菜单栏Ⅰ...
下面将讲述如何在顶层容器中添加菜单栏.下面将通过编写一段Swing程序代码来讲解如何在顶层容器中添加菜单栏.其代码如下: publicclassBWFSwingMenu { staticintwidt ...
- (JAVA)使用swing组件模仿QQ界面+网络编程实现QQ消息传输
直接贴当时的实验报告吧. 1.课程题目 模仿腾讯QQ实现一个即时聊天软件,可以进行好友管理以及私聊等功能. 1.1功能性分类 功能类别 功能名称.标识符 描述 用户信息 用户登陆 用户登陆 用户注册 ...
- 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条
http://blog.csdn.net/terryzero/article/details/3797782 疯狂JAVA讲义---第十二章:Swing编程(五)进度条和滑动条 标签: swing编程 ...
- java swing控件大全_java swing 组件大全(新手快进)
import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.tree.*; import ...
- java swing 组件技术(上)
2019独角兽企业重金招聘Python工程师标准>>> 第一次写自己的博客,明知道写得很水,还是努力去写了,希望踏出第一步之后,能有着更好的发展.这几天看了一些资料,总结了一下自己所 ...
最新文章
- python编程到底难不难_养成下面几个编程习惯,学习python并不难!
- 口令即漏洞 放弃它吧
- 如何实现ios屏幕的横竖屏自适应
- XDR3020 WiFi6 11ax使用体验 11ax性能数据
- caliop 数据可视化_星载激光雷达CALIOP数据处理算法概述
- python自带的sum()函数和numpy库中的sum()函数的区别
- Spring什么是复杂对象
- 动态网页开发基础【笔记】
- poj3190 区间贪心 挑战程序设计竞赛
- MATLAB中矩阵与数组的区别,点运算符的运用
- STM103单片机串口输出函数printf重映射
- SAP固定资产业务场景及方案
- css3线性渐变怎么写,CSS3线性渐变指南
- Qt制作简易电子相册
- 神经元的细胞体位于哪里,神经在人体的什么部位
- 会议选座位php,会议室座次(会议座位怎么排位)
- seLinux的管理
- 协鑫集成的这款组件,真的很适合农光互补!
- 为什么网络安全缺口很大,而招聘却很少?
- [每日一题]C语言:将输入的一句话的单词倒置,但标点符号不倒置
热门文章
- Design Pattern - Bridge(C#)
- EGLImage与纹理
- java文件格式_Java Class文件格式详解
- python 运行pyc_python项目运行后产生__pycache__包含pyc格式文件
- pilt图像处理_Python用Pillow(PIL)进行简单的图像操作
- JavaScript面向对象及原型 及setTimeout
- oracle阻塞查询,oracle 查询阻塞的sql语句
- 计算机会计学ufo报表,计算机会计实践部分工资管理系统.ppt
- linux redis ruby,redis requires ruby version 2.2.2的解决方案
- oracle 行级死锁_ORACLE死锁的分类