【Swing入门教程】一步一步做Netbeans(4):JTree的使用及定制TreeCellRenderer

Swing JTree的使用及常用方法、常用功能实现 JTree的使用及常用方法、实现本地文件树、实现下拉列表树、节点的拖拽功能实现等 阅读详情

      下一步我们要做什么呢,其实我是想早点睡觉;我一直有个愿望,希望能在12点之前睡觉,每次都被我硬生生的拖到12点以后,我一直认为12点之前睡觉是浪费时间,会有一种负罪感。那都是学生时代养成的习惯,那时晚睡没关系,第二天可以补回来。然而,工作了觉是补不回来的。

      JTree是Swing里一个很重要的组件,要详细讲的话起码要N个教程。我这就偷工减料,况且我对JTree的理解也只是入门阶段,还是不误人子弟的好。接下来我们要实现Netbeans中项目的文件树列表,这个非JTree莫选了。按惯例,先看下效果:

文件树效果

      有几点做的不好:

      1:根节点还在。或许你说用setRootVisible(false)不就行了。这样虽然根节点看不见了,但是下面主节点前的小加号都没了,这个暂时还不知道怎么解决,希望各位给点意见。

      2:顺序有点乱,和Netbeans中的顺序不一样。我是采用JTree的默认排序,它是按字母排序的;而Netbeans的规律是文件夹在前,文件在后。

      3:节点的图标和文件名的距离过近。这个就是图标的问题了,Netbeans图标的右边肯定留了一些空白,他有两套图标,另一套是给有版本控制用的(右边多了个小标志)。

      废话不多说了,上代码;先在"文件"面板上放入JTree,通过initTree()来初始化:

      initTree()中重要的是如何通过文件夹来初始化JTree的节点,里面用到的一个递归函数;在学校时递归函数没理解好,还在里面绕了一小会:

     这样一颗文件树就构造好了,只是树节点的图标都是JTree默认的图标,和Netbeans的不一样。于是不得不为JTree定制渲染器了,至少把图标改一下嘛:

   

       需要为JTree指定TreeCellRenderer,initTree()中的188行加入:

搞定收工。

JTree为每个节点设置自定义的icon(四) JTree为每个节点设置自定义的icon 阅读详情

相关推荐

1.30 Cubemx_STM32H743 SD_Card纳入文件管理系统

Cubemx_STM32H743 SD_Card纳入文件管理系统1、简介2、CubeMX配置 1、简介 和前面文章原理其实一样的。 1.29 Cubemx_STM32F429\H743 nandflash、spifalsh纳入文件管理系统 现在一并将SD卡、NandFlash、SPIFlash一并作为文件管理。 下面直接介绍SDcard,其他参考前面文章。 2、CubeMX配置 ...

oDuanYanGuHong的博客 1080

swing中JTree的使用和JTree在netbeans中的用法

今天吃完早饭,拿着筷子和空盘走到洗碗处,放下空碗空盘,将筷子扔到白色的塑料桶里......出来的时候,同学用惊诧的眼神看着我说,你刚才为什么把筷子扔到垃圾桶里?不讲了,干了一件傻事,不知道收盘员是不是呆了。入正题: 如何在java swing里使用JTree,就像下面这样的树<br />手工创建:首先,你需要创建一个JScrollPane,然后创建一个JTree,再然后创建节点TreeNodeJScrollPane是盛放JTree的容器,JTree是一个结构相当于一个房子的钢筋框架,真正的内容是节点node

zhjcyn的专栏 767

【入门篇】第五章 第一次与 AI Agent 交互

本文介绍了OpenClaw中最基本的用户与AI Agent交互方式,剖析了Agent和Gateway两个核心组件的作用,通过简单示例展示了从用户请求到结果返回的完整执行流程,说明了最小交互过程对验证系统可用性的重要意义,为后续学习复杂任务执行机制奠定基础。

lanyv的博客 512

JTree节点渲染和资源管理器加载

前面已经把树的基本使用、树的事件和树的数据取得写完了,并看了一个Sun提供的最简单的树的例子,这一专题我们讲两个方面,一个是使用树的Renderer和Editor构造一棵我们自己的树;一个树使用SwingWorker完成一棵资源管理器树的加载。(文/ zeyuphoenix) 先看渲染的例子: 我们为我们的树增加了可用与否、可见与否和节点图片的属性,当然你也可以自己添加

3981

多标签分类怎么做?(Python)

首先简单介绍下,多标签分类与多分类、多任务学习的关系: 多分类学习(Multi-class):分类器去划分的类别是多个的,但对于每一个样本只能有一个类别,类别间是互斥的。例如:分类器判断这只动物是猫、狗、猪,每个样本只能有一种类别,就是一个三分类任务。常用的做法是OVR、softmax多分类

y1282037271的博客 1359

FPGA SPI驱动ADC避坑指南:以ADC128S022为例,详解时序设计与代码调试

本文以ADC128S022为例,详细解析FPGA通过SPI驱动ADC的时序设计与代码调试中的常见问题。从时钟分频计算、SPI模式选择到状态机实现,提供避坑指南和实战技巧,帮助工程师解决数据采集系统中的时序匹配难题。特别针对FPGA与ADC通信中的微妙差异,给出精确的Verilog代码示例和ModelSim仿真验证方法。

weixin_42522374的博客 458

TreeCellRenderer使用方法简介

在Jtree中如果要改变Jtree的显示方式要使用到TreeCellRender,通过对他的实现才能够得到不同显示方式的Jtree也使得Jtree的显示更加丰富多彩,如何使用这个接口哪。我借助下面的例子简单介绍一下,希望能够抛砖引玉。其实实现这个类主要是对这个方法的实现:public Component getTreeCellRendererComponent(JTree tree, Object

走出条路来给自己看 7049

告别 RPA 和 Selenium,MCP + Playwright 成为自动化开发新宠!

摘要: 随着数字化转型加速,传统自动化工具(如RPA和Selenium)在复杂场景中暴露出开发成本高、灵活性不足等问题。新一代解决方案MCP(Model Context Protocol)与Playwright的结合,通过AI与自动化的无缝对接,实现了智能化的任务处理。MCP支持自然语言交互和上下文感知,开发者无需编写复杂代码即可生成自动化脚本;Playwright则提供多浏览器支持、高性能和易用性。二者结合显著提升开发效率,使自动化更智能、灵活。文章还对比了VS Code与Trae中配置Playwrigh

我先测了 2209

NetBeans RCP - 使用 Node & ExplorerManager 结合 BeanTreeView 编写一个磁盘文件树

版权声明:转载时请务必保留以下作者信息和链接作者:陈维(chenweionline@hotmail.com)作者的网站:http://www.chenwei.mobi在 NetBeans Platform (以后简称 NP)里,Node 负责提供内容在界面组件里的表现,Tree 、 List 、Palette、Property Sheet 等界面组件都和 Node 有关,所以 Node 结构的

键盘上的舞者 5725

向华为学习——解读华为战略规划SP与业务计划BP流程【附全文阅读】

该方案针对大中型企业高管及战略团队,系统拆解华为SP(4-9月中长期规划)与BP(10-12月年度执行)双轨体系,形成"战略制定-业务设计-资源配置-绩效解码"闭环。SP侧重市场趋势分析、业务优先级与资源分配,BP细化KPI、预算及行动计划。通过价值树、战略解码等工具实现战略到部门/个人的目标分解,强化跨部门协同与过程管控。配套17份华为实战资料(包括战略管理、流程优化、销售组织建设等核心方法论),助力企业建立规范的战略执行体系,实现资源优化与绩效落地。

cdfunlove的博客 770

RK3588 MPP,RGA,DRM,QT之RGA

RK3588多路视频采用RGA来进行混合成一帧

dreamliweiming的博客 4265

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

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.tr

cuiyaoqiang的博客 1888

【人工智能】OpenClaw网关API速率限制报错全解析 API rate limit reached. Please try again later.

对应HTTP标准状态码为429(请求过多)。该报错集中出现在OpenClaw GATEWAY DASHBOARD的聊天会话界面,核心特征为:用户最初以为是单一模型服务商的问题,先后更换OpenAI、Gemini、Ollama、Moonshot、Mercury-2等多个主流大模型API后,该报错仍稳定触发,尤其在执行复杂任务时高频出现。

奶爸的编程之路,也就一周冷个三天 6459

jtree相关的getTreeCellRendererComponent方法的使用

我们在设置jtree的样式的时候,一般都用DefaultTreeCellRenderer这个类进行构造。 基本代码: Jtree tree=new Jtree(); DefaultTreeCellRenderer ren=new DefaultTreeCellRenderer(); ren.setBackgroundSelectionColor(Color newColor);//选中...

jhhuang4836的专栏 1202

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

(转)扩展DefaultTreeCellRenderer创建自己的树节点渲染器示例。

通常来说,使用下面的方法确实能改变树节点的图标,但灵活性不高。// 设定叶节点图标Icon leafIcon = new ImageIcon(TreeViewPanel.class        .getResource("/leaf.gif"));// 设定关闭状态节点图标Icon closedIcon = new ImageIcon(TreeViewPanel.class        .

chenpengjiayou的专栏 2629

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

(一)如何使用JTree

英文文档地址: http://download.oracle.com/javase/tutorial/uiswing/components/tree.html 如何使用 Jtree (1)创建树 (2)对节点的选择做出响应 (3)自定义树的外观表现 (4)动态改变一棵树 (5)创建树的数据模型 (6)懒加载孩子 (7)如何写expansion linstener ...

永无止境 915

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java tree的使用_转载:JAVA中JTree的使用

最近在看“企业快信”的源代码,这个项目的好友列表是用JTree实现的。在理解了它的写法之后,就想把JTree控件的使用熟悉一下。于是自己写了个小练习,就是显示数据库中的用户名和图片路径在JTree中,并且还可以添加用户,同时在JTree中显示。JTree中,有TreeCellRenderer接口,可以用类来实现这个接口。在这个接口相应的方法中,可以对树中的节点进行设置。如我就是在这个方法中设置节点...

weixin_39523625的博客 1051

JTree像QQ一样显示图片

要想JTree显示带图片的节点,其目的就是改变JTree的渲染器,也就是调用JTree中setCellRenderer(TreeCellRenderer x),而默认的DefaultTreeCellRenderer没有这个功能,于是我就去继承这个类并重写它的getTreeCellRendererComponent方法,示例如下:   步骤一,继承DefaultTreeCellRenderer类

ycb1689的专栏 1451

javaFX学习之TreeView组件(转载)

javaFX应用程序中如何构建树形结构,如何向树视图中增加项、处理事件、通过实现和添加单元格工厂(Cell Factory)自定义树的单元格。 在javafx.scene.control包中的TreeView类提供了展示层级结构的视图。在树中最顶级的节点被称为“根(Root)节点”。Root节点包括了一些子节点,这些子节点还可以有下级子节点。一个没有子节点的节点被称为“叶子(leaf)节点 是一个带有树视图的应用程序截图 创建树视图 如果需要在JavaFX应用中创建树形结构,你一般需要实例化Tre.

zy103118的博客 4549

关于使用TreeCellRenderer设置背景颜色无效的问题

在使用JTree时,当我们需要自己定义渲染器时,就需要实现TreeCellRenderer类或者继承DefaultTreeCellRenderer类。不管是实现或者继承,当我们需要改变背景颜色而调用setBackground()方法时,设置可能无效(有意思的是设置前景颜色setForeground()确是有效的)。出现这种情况,我们就需要加上这样的语句:this.setOpaque(true); s

fengwen2011的博客 1234
上一篇: 【Swing入门教程】一步一步做Netbeans(3):定制可显示多行的JToolTip
下一篇: 【Swing入门教程】一步一步做Netbeans(5):Swing的线程管理及如何写健壮的安全的正确的Swing程序
小莫M
博客等级 码龄17年 292粉丝 25原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值