java表格的使用 单元格绘制二
JTable单元格是由单元格绘制器绘制出来的,这是一些执行TableCellRenderer接口的类。TableCellRenderer接口定义了唯一的getTableCellRendererComponent方法,返回对Component的引用,二Component则用来实现绘图操作。但是因为定义单独的类来执行TableCellRenderer比较方便,而且可以实现绘图操作,所以TablecellRenderer通常只返回对自己的引用。下面是传递给getTableCellRendererComponent()方法的几个参数:
- 对JTable的引用,含有要绘制的单元格
- 对单元格值的引用
- boolean标记,用来表示单元格是否被选中
- boolean标记,用来表示单元格是否为输入焦点
- 绘制的单元格的行索引号
- 绘制的单元格的列索引号
public void setTableStyle(JTable table){
//设置表头 的绘制器
DefaultTableCellHeaderRenderer headerRender = new DefaultTableCellHeaderRenderer(){
private static final long serialVersionUID = 7012909291394175134L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
//绘制单元格的边框
setBorder(new MatteBorder(0,1,0,1, new Color(0x1A2730)));
setText((value == null) ? "" : value.toString());
setBackground(new Color(0x2d7e89));
setFont(new Font("宋体", Font.PLAIN,15));
return this;
}
};
headerRender.setHorizontalAlignment(JLabel.CENTER);
table.getTableHeader().setDefaultRenderer(headerRender);
//设置背景颜色
table.getTableHeader().setBackground( new Color(0x2d7e89));
table.getTableHeader().setForeground(Color.white);
//设置单元格的绘制器
DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer(){
private static final long serialVersionUID = -3807459616324121906L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected){
//设置选中时 单元格的颜色
setBackground(new Color(0x6EBBCA));
}
else {
setBorder( new MatteBorder(0,1,0,1, new Color(0x1A2730)));
setBackground(new Color(0xDCEBED));
}
setText((value == null) ? "" : value.toString());
setFont(new Font("宋体", Font.BOLD,14));
return this;
}
};
cellRender.setHorizontalAlignment(JLabel.CENTER);
cellRender.setForeground(Color.RED);
table.setDefaultRenderer(Object.class, cellRender);
// 设置表是否绘制单元格周围的网格线。
table.setShowGrid(false);
//设置表是否绘制单元格之间的水平线
table.setShowHorizontalLines(false);
table.setBackground(new Color(0xDCEBED));
//设置单元格之间的间距
table.setIntercellSpacing(new Dimension(0,0)); table.getColumn(colname[colname.length - 1]).setMaxWidth(0);
table.getColumn(colname[colname.length - 1]).setMinWidth(0);
table.getColumn(colname[colname.length - 1]).setPreferredWidth(0);
}
运行结果
通过单元格绘制器,可以设置指定单元格或者指定列指定行的颜色字体,甚至可以根据单元格的值不同,显示不同的颜色等等。
代码示例如下
/**
* 当编号在5~7之间 设为蓝色
* @param table
*/
public void setTableStyleByID(JTable table){
//设置表头 的绘制器
DefaultTableCellHeaderRenderer headerRender = new DefaultTableCellHeaderRenderer(){
private static final long serialVersionUID = 7012909291394175134L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
//绘制单元格的边框
setBorder(new MatteBorder(0,1,0,1, new Color(0x1A2730)));
setText((value == null) ? "" : value.toString());
setBackground(new Color(0x2d7e89));
setFont(new Font("宋体", Font.PLAIN,15));
return this;
}
};;
headerRender.setHorizontalAlignment(JLabel.CENTER);
table.getTableHeader().setDefaultRenderer(headerRender);
//设置背景颜色
table.getTableHeader().setBackground( new Color(0x2d7e89));
table.getTableHeader().setForeground(Color.white);
//设置单元格的绘制器
DefaultTableCellRenderer cellRender = new DefaultTableCellRenderer(){
private static final long serialVersionUID = -3807459616324121906L;
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
int var = Integer.valueOf(table.getModel().getValueAt(row, 0).toString()); if (isSelected){
//设置选中时 单元格的颜色
setBackground(Color.BLACK);
}
else {
if (var >=5 && var <=7){
setBackground(Color.BLUE);
}else{
setBackground(new Color(0xDCEBED));
}
setBorder( new MatteBorder(0,1,0,1, new Color(0x1A2730)));
}
setText((value == null) ? "" : value.toString());
setFont(new Font("宋体", Font.BOLD,14));
return this;
}
};
cellRender.setHorizontalAlignment(JLabel.CENTER);
cellRender.setForeground(Color.RED);
table.setDefaultRenderer(Object.class, cellRender);
// 设置表是否绘制单元格周围的网格线。
table.setShowGrid(false);
//设置表是否绘制单元格之间的水平线
table.setShowHorizontalLines(false);
table.setBackground(new Color(0xDCEBED));
//设置单元格之间的间距
table.setIntercellSpacing(new Dimension(0,0)); table.getColumn(colname[colname.length - 1]).setMaxWidth(0);
table.getColumn(colname[colname.length - 1]).setMinWidth(0);
table.getColumn(colname[colname.length - 1]).setPreferredWidth(0);
}运行结果
java表格的使用 单元格绘制二的更多相关文章
- FineUI大版本升级,外置ExtJS库、去AXD化、表格合计行、表格可编辑单元格的增删改、顶部菜单框架
这是一篇很长的文章,在开始正文之前,请允许我代表目前排名前 20 中唯一的 .Net 开源软件 FineUI 拉下选票: 投票地址: https://code.csdn.net/2013OSSurve ...
- Swift - 给表格添加移动单元格功能(拖动行)
1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现拖动按钮 (3)鼠标按住拖动按钮,可以 ...
- JS动态生成表格后 合并单元格
JS动态生成表格后 合并单元格 最近做项目碰到表格中的单元格合并的问题,需求是这样的,首先发ajax请求 请求回来后的数据 动态生成表格数据,但是生成后如果编号或者(根据其他的内容)有相同时,要合并单 ...
- NX二次开发-UFUN工程图表格注释设置单元格首选项UF_TABNOT_set_cell_prefs
NX9+VS2012 #include <uf.h> #include <uf_tabnot.h> #include <NXOpen/Part.hxx> #incl ...
- Excel表格如何保护单元格不被修改
Excel如何保护单元格不被修改 有时使用Excel时希望保护单元格不被修改,这可以叫做单元格的“写保护”即把光标定位在一个不允许输入数据的区域内时,是无论如何也无法在里面输入数据的.下面咱们就一起 ...
- WebDriver获得表格里所有单元格的文本
方法为: 1. 得到表格中所有的tr,存到list到中 2.对tr进行循环,根据当前的tr,得到当前所有td的集合存到list当中 3.循环中所有td里的文本 package com.example. ...
- Java删除word合并单元格时的重复值
Spire.Doc提供了Table.applyVerticalMerge()方法来垂直合并word文档里面的表格单元格,Table.applyHorizontalMerge()方法来水平合并表格单元格 ...
- ASP.NET- 合并HTML的表格相同项单元格
我对控件的依懒是比较少的.有几个控件我比较喜欢用,例如REPEATER显示列表的控件,能提供很大的方便. 使用REPEATER有一个比较方便的功能是通过几句代码就实现了相同项合并单元格合并,这个虽然平 ...
- layui:数据表格如何合并单元格
layui.use('table', function () { var table = layui.table; table.render({ elem: '#applyTab' , url: '$ ...
随机推荐
- PPK谈JS笔记第一弹
以下内容是读书笔记,再一次温习JS好书:PPK谈JS window.load=initializePageaddEventSimple('window','load',function(){}) lo ...
- Ajax与JqueryUI和EasyUI错题总结
Ajax与JqueryUI和EasyUI错题总结 正确答案A,解析:此题考察的是JQuery UI下的menu插件的使用,menu提供ui-state-disabled class 方法禁用任何菜单项 ...
- SharePoint 2013技巧分享系列 - Active Directory同步显示用户照片
为了保持通讯信息的一致性,需要设置SharePoint,Exchange, Lync等信息同步更新显示,例如,员工头像信息. 本文介绍如何在SharePoint 2013中同步显示Active Dir ...
- Python list
序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列 ...
- bzoj 1296: [SCOI2009]粉刷匠
Description windy有 N 条木板需要被粉刷. 每条木板被分为 M 个格子. 每个格子要被刷成红色或蓝色. windy每次粉刷,只能选择一条木板上一段连续的格子,然后涂上一种颜色. 每个 ...
- 让所有的浏览器都能识别HTML5标签样式的小插件
如今HTML5愈来愈引发大家的关注了,但目前支持HTML5的浏览器还不是主流,特别是国内用户近50%以上仍旧使用IE6,由于支持HTML5的IE9不支持Xp系统安装,这样未来很长一段时间,HTML5的 ...
- 让Web API支持Protocol Buffers
简介 现在我们Web API项目基本上都是使用的Json作为通信的格式,随着移动互联网的兴起,Web API不仅其他系统可以使用,手机端也可以使用,但是手机端也有相对特殊的地方,网络通信除了wifi, ...
- 即使用ADO.NET,也要轻量级实体映射,比Dapper和Ormlite均快
不管出于什么原因,有时候框架人员摒弃了NH或EF,而使用原生数据库访问对象. 为了优美的编程,用上我写的轻量级映射扩展方法吧 目的:将SqlDataReader自动转换成T类型 代码如下: /// & ...
- HIbernate的property-ref属性
为公司之前的一个公交卡系统修改bug: 通过排查发现, 卡类型表和卡等级表是一对多的关系, 但是卡等级表中没有字段引用卡类型表的主键,而是引用了卡类型表中非主键的另外两个字段 通过查看hibernat ...
- 2016 Web开发资源工具大搜罗
来源于:https://zhuanlan.zhihu.com/p/22730771 作者:余博伦链接:https://zhuanlan.zhihu.com/p/22730771来源:知乎著作权归作者所 ...