如何为jtree的不同结点加不同的图标

amekoxiao 2004-12-16 04:50:55
我已经实现了相同级别的结点加不同的图标
现在求如何为所有的结点分别加不同的图标
...全文
419 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tomcatjava 2004-12-16
  • 打赏
  • 举报
回复
法一:扩展DefaultTreeCellRenderer,我的实现如下:

/**
* Customizes tree cell renderer.
*
* @version $version 1.0
* @author yuch
* @date 2004-7-2
*/

import java.awt.Component;
import java.awt.Font;
import java.awt.Color;

import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;

public class MyTreeCellRenderer extends DefaultTreeCellRenderer {

public MyTreeCellRenderer() {
}

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 );

setBackgroundNonSelectionColor( new Color( 245,209,135 ) );
setBackgroundSelectionColor( Color.red );
setBorderSelectionColor( Color.green );

URL urlOpen = MyTreeCellRenderer.class.getClassLoader().getResource( "resource/images/openfold.gif" );
URL urlClose = MyTreeCellRenderer.class.getClassLoader().getResource( "resource/images/closedfold.gif" );
URL urlLeaf = MyTreeCellRenderer.class.getClassLoader().getResource( "resource/images/leaf.gif" );

setOpenIcon( new ImageIcon(urlOpen) );
setClosedIcon( new ImageIcon(urlClose) );
setLeafIcon( new ImageIcon(urlLeaf) );

//这个地方可以自己设定条件,什么条件显示什么样的字体,Icon什么的
Font font = getFont();
if( !leaf ) {
setFont( font.deriveFont( Font.BOLD ) );
}
else {
setFont( font.deriveFont( Font.ITALIC ) );
}

return this;
}
}
FGS 2004-12-16
  • 打赏
  • 举报
回复
参考Icon,很容易的。
liangfengxx 2004-12-16
  • 打赏
  • 举报
回复
恩,我也在搞这个东东,帮你顶
它通过读取 Excel 表格中的业务数据,结合 Word 模板,自动生成多个独立的合同文件,并自动处理了表格中“合计”行的合并与中文大写金额转换。 资源名称:合同文档自动化生成脚本 (1.py) 名字真是乱起 核心功能:Excel 数据读取 → Word 模板渲染 → 表格单元格合并与金额处理 → 批量导出 Word 文档。 适用场景:财务、销售或行政部门需要根据订单或业务明细,批量制作格式统一的合同、报价单或结算单。 1. 自动把“钱”变成“大写” 它干了啥:它内置了一个翻译功能,专门把阿拉伯数字(比如 100.50)自动转换成财务专用的中文大写(比如 壹佰元伍角)。 为什么有用:写合同最怕手滑写错金额,或者大写格式不对。这个功能全自动搞定,既标准又不会出错。 2. 自动“装修”表格底部 它干了啥:生成文档后,它会自动找到表格的最后一行,把前几列合并成一个大格子,写上“合计:XXX(大写金额)”,并在最右边填上具体的数字总额。 为什么有用:平时我们做完表格,还得手动去合并单元格、算总数、填大写,非常繁琐。这个脚本直接一步到位,把表格收尾工作做得漂漂亮亮。 3. 像“发传单”一样批量做合同 它干了啥:它会看你的 Excel 表格,按照“编号”把数据归类。 如果是同一个编号的货物,它会把它们塞进同一个合同里(比如一个客户买了三样东西,会自动列三行)。 如果是不同的编号,它就生成不同的合同文件。 为什么有用:不管你有一百个还是一千个订单,它都能自动拆分,给每个客户生成一份独立的、内容准确的合同,完全不用人工去复制粘贴。

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧