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: '$ ...
随机推荐
- 架构实例之Demo_JSP_JavaBean
架构实例之Demo_JSP_JavaBean 1.开发工具和开发环境 开发工具: MyEclipse10,JDK1.6.0_13(32位),Tomcat7.0(32位),mysql5.7.1 ...
- Windows Live Writer测试
第一次使用Windows Live Writer,一堆问题,不知道是中国强大的局域网防火墙问题还是咋的,弄了半天. 1.C++的测试代码: int _tmain(int argc, _TCHAR* a ...
- POJ1201 Intervals[差分约束系统]
Intervals Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 26028 Accepted: 9952 Descri ...
- BZOJ3130: [Sdoi2013]费用流[最大流 实数二分]
3130: [Sdoi2013]费用流 Time Limit: 10 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 960 Solved: 5 ...
- Jsp 错题分析
ArrayList删除元素通过RemoveAt(int index)来删除指定索引值的元素 运行时异常都是RuntimeException类及其子类异常,如NullPointerException.I ...
- 微信小程序购物商城系统开发系列-工具篇
微信小程序开放公测以来,一夜之间在各种技术社区中就火起来啦.对于它 估计大家都不陌生了,对于它未来的价值就不再赘述,简单一句话:可以把小程序简单理解为一个新的操作系统.新的生态,未来大部分应用场景都将 ...
- codev 2147 数星星
2147 数星星 http://codevs.cn/problem/2147/ 题目描述 Description 小明是一名天文爱好者,他喜欢晚上看星星.这天,他从淘宝上买下来了一个高级望远镜.他十分 ...
- Javascript:来一个AJAX封装函数
前不久换工作了,最近一直在出差,忙得跟狗一样,所以博客都荒废许久了. 最近的工作中涉及到大量的ajax操作,本来该后台做的事也要我来做了.而现在使用的ajax函数是一个后台人员封装的—-但他又是基于 ...
- C#基础系列——多线程的常见用法详解
前言:前面几节分别介绍了下C#基础技术中的反射.特性.泛型.序列化.扩展方法.Linq to Xml等,这篇跟着来介绍下C#的另一基础技术的使用.最近项目有点紧张,所以准备也不是特别充分.此篇就主要从 ...
- Android开发自学笔记(Android Studio)—4.1布局组件
一.引言 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.在Android4.0之前,我们通常说 ...