`
df20070608
  • 浏览: 30200 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

设置树的节点图标

阅读更多

看见不少人正在做山寨QQ,特来此分享一点经验。

当初做QQ时,令我最郁闷的莫过于界面,在好友列表那纠结了很久,当时找了很久资料,终于算是把设置JTree节点的图标解决了,直接看源码吧:

//jtemp是一个JTree

jtemp.setCellRenderer(new DefaultTreeCellRenderer(){

           int i=0;

           public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {

              super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);

              String iconName;

              String value1=value.toString();

              if(value1.equals("小红")){

                  iconName="1.png";

                  setIcon(new javax.swing.ImageIcon(iconName));

              }if(value1.equals("小明")){

                  iconName="2.png";

                  setIcon(new javax.swing.ImageIcon(iconName));

              }

               return this;

            }

            

       });

public Component getTreeCellRendererComponent(JTree tree,
                                              Object value,
                                              boolean sel,
                                              boolean expanded,
                                              boolean leaf,
                                              int row,
                                              boolean hasFocus)

这里主要就是上面这个方法的使用,当初我第一眼看见这个方法时,我被吓着了,7个参数,加之找不到相应的资料,几乎不敢下手,不过仔细看看,这个方法还是很好摆平的,

tree:当前节点所处的树

value:当前节点的值

sel expanded leaf分别代表当前节点是否被选中、展开、是叶子节点!

后两个参数没用上!另外试着测试了一下,这个方法被调用次数很频繁,目前自己测试结果是:每点击一个节点会把所有节点遍历一次,不知是否会影响效率。

效果图:

 

 

 

 

后来又碰上了图标显示区域大小一开始就固定了,想实现节点被选中时放大缩小效果,结果被选中时,一个大图标就只有一部分被显示出来,望大家分享经验!另外通过setRootVisiblefalse)可以隐去根结点,这样就比较类似QQ好友列表!

在用树之前我考虑过有JTable,就一个按钮一个JTable,通过流式布局能模仿树,因为个人感觉对表的操作要简单一些,结果失败了!

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    flex树自定义节点图标

    - 节点图标可以增强用户对树结构的理解,通过图标直观地传达节点类型或状态信息。 - 图标可以是静态图片,也可以是SVG矢量图,适应不同设计风格和响应式需求。 - 自定义图标使开发者能够根据业务需求定制视觉表现...

    VC Ctreectrl树节点后面添加图标

    在某些情况下,我们可能需要自定义这个控件,使其具备在每个树节点后添加图标的特性。实现这一功能,主要是通过重写`CtreeCtrl`的`WM_NOTIFY`消息中的`NM_CUSTOMDRAW`部分来完成。 `NM_CUSTOMDRAW`消息是Windows...

    可自定义树节点的Tree组件

    `可自定义树节点的Tree组件`是一个专为满足这种需求而设计的功能强大的工具。它允许开发者根据具体项目的需求来定制树形结构的节点展示,提升用户体验并优化数据管理。在本文中,我们将深入探讨这个组件的工作原理、...

    echarts tree 节点替换图标,节点蔓延状态自动播放

    在本文中,我们将深入探讨如何在ECharts的Tree图中替换节点图标,并实现节点蔓延状态的自动播放功能。ECharts是一款基于JavaScript的开源可视化库,它提供了丰富的图表类型,包括柱状图、折线图、饼图以及我们关注的...

    前端开发树节点PC端

    在前端开发领域,"树节点"是一个常见的概念,特别是在构建用户界面时,特别是对于数据层级结构的展示。树节点主要用于组织和表示具有层次关系的数据,例如文件系统、组织架构或者菜单导航等。在这个名为"前端开发树...

    树形组件扩展版(图标)

    1. **节点图标配置**:为每个节点添加一个图标属性,如`icon`,并根据该属性在渲染节点时插入对应的HTML元素,比如`<i class="icon-class"></i>`,其中`icon-class`代表图标样式类。 2. **状态相关的图标**:节点的...

    完整的ZTree树展示及对树节点的增删改

    本话题将深入探讨ZTree的完整展示以及如何对树节点进行增加、删除和修改操作,同时也包括树节点之间的拖拽功能。 一、ZTree的完整展示 ZTree的完整展示涉及到以下几个关键点: 1. 数据源:ZTree的数据源通常是一...

    iview树添加图标

    iview树添加图标

    ELPHI TreeView 文件目录树和 设置节点图标 完整

    1 文件夹 设置图标为 2 文件夹里没有文件的文件夹 设置图标为 没有 3 .HTML文档 设置图标为 4 有附件的 文档设置图标为 DELPHI XE 5测试通过 http://www.cnblogs.com/xe2011/p/3386257.html

    Q693527.rar delphi treeview的子节点图标

    在给定的标题“Q693527.rar delphi treeview的子节点图标”中,重点讨论的是如何为TreeView的子节点设置和显示图标。 在Delphi中,为TreeView的节点设置图标通常涉及以下几个步骤: 1. **加载图标资源**:首先,你...

    动态加载树节点

    "动态加载树节点"这一概念就是基于这种思想,它主要用于构建可扩展的、高效的树形数据结构展示。在描述中提到,当用户点击父节点时,会显示“正在加载效果”,然后动态加载对应的子节点。这种方法避免了一次性加载...

    树形表格菜单 动态添加节点/动态删除节点/动态移动节点

    11.支持theme,纯css定制表格树,可以自由定制theme,包括图标/节点大小等 12.表格树从右到左显示 13.本地节点搜索,服务器端节点搜索(未实现待完成) 14.无变化重新刷新整个树Refresh 15.支持插件开发,可以为树添加更多...

    ztree实现左右两棵树的节点移动

    同时,可以设置自定义图标或按钮,通过点击触发移动操作。 5. **性能优化**: - 在处理大量节点时,为了提高性能,避免一次性加载所有数据,可以采用异步加载(async)方式,只加载可视区域内的节点,当需要时再...

    Qt5 qml TreeView 迄今为止功能最全的树控件节点前增减节点、节点后增加节点、重命名节点及节点选中、悬浮背景颜色定制等功能

    通过自定义`ItemDelegate`,你可以设置文本样式、添加图标,甚至创建交互式的组件。 在`QmlTreeWidget`这个压缩包中,可能包含了示例代码和资源,帮助开发者理解并实现上述功能。通过学习和参考这些示例,你将能更...

    JSP自定义标签 无限级树-支持各节点图标自定义

    本文将深入探讨“JSP自定义标签”如何实现无限级树结构,并支持节点图标自定义,以及其背后的原理和技术要点。 首先,我们要理解什么是自定义标签。在JSP中,自定义标签是开发者为了简化页面逻辑、提高代码复用性而...

    功能更强的树节点

    "功能更强的树节点"这一主题,通常指的是在图形用户界面(GUI)中用于展示层次结构数据的一种控件,如文件系统、组织结构或数据库关系。在本案例中,我们看到的关键词"拖拽"和"右键菜单"都是这种树形节点增强功能的...

    jq_超简单树节点.rar

    2. **CSS样式**:为树节点添加必要的CSS样式,如折叠/展开的图标,以及展开/折叠状态的控制。例如: ```css .tree li::before { content: '\25B6'; /* 使用CSS的字符实体表示展开图标 */ cursor: pointer; /* ...

    VS2010_MFC_CTreeCtrl的创建、使用、添加节点图标的测试例子

    代码包含CTreeCtrl的基本创建方法: 1、创建带图标的树,参考函数SetTree; 2、鼠标点击树节点的动作,参考函数OnTvnSelchangedTree1; 仅供参考学习所用,如觉得有用,请多分享链接。

    YUI3 实现overlay展开是tree,并且树节点可以拖拽-drag和drop

    3. **配置`DD`**:为每个树节点启用`Drag`功能,这包括设置拖动的Handle(通常是节点的图标或文本),并注册`Drag`实例到`DDProxy`,以便在拖动过程中显示节点的临时副本。 4. **定义`Drop`目标**:可以是`Overlay`...

    拖拉树节点的例子

    首先,拖放技术(Drag and Drop)允许用户通过鼠标或其他输入设备选择一个元素(如文件、图标或树节点),然后将其移动到另一个位置来执行某种操作。在Windows、Mac OS和大多数现代操作系统中,这是个内置功能。在...

Global site tag (gtag.js) - Google Analytics