java自定义表格渲染器,表单元格渲染器的使用

使用表格渲染器渲染表格

在使用JTable时,用户往往希望改变它缺省的渲染方式,比如使用间隔色的行,对特定的单元格进行特殊颜色显示等,这对一些可视化编程环境的表格并不是一件容易的事。

在Java Swing编程中我们可以使用DefaultTableCellRenderer的子类渲染表格来达到这个目的,实现和使用它都非常容易。

渲染效果一:

e5c905cd7f710c1ad48733e96911a655.png

步骤一:实现一个javax.swing.table.DefaultTableCellRenderer的子类

/**

* 间隔色表格渲染类

*/

public class ColorTableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = -3378036327580475639L;

public Component getTableCellRendererComponent(

JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column) {

// 得到单元格

Component cell =

super.getTableCellRendererComponent(

table,

value,

isSelected,

hasFocus,

row,

column);

// 进行渲染

if (hasFocus) {

// 如果获得焦点则设置背景色为红色

cell.setBackground(Color.red);

//cell.setForeground(Color.black);

} else {

if ((row % 2) == 0) {

// 偶数行设置为白色

cell.setBackground(Color.white);

} else {

// 奇数行设置为蓝色

cell.setBackground(Color.cyan);

}

}

return cell;

}

}

步骤二:将ColorTableCellRenderer设置为表格的渲染器

try {

ColorTableCellRenderer cellRender = new ColorTableCellRenderer();

table.setDefaultRenderer(Class.forName("java.lang.Object"),

cellRender);

} catch (Exception e) {

e.printStackTrace();

}

实现一个将特定单元格设置为红色的表格渲染器

如右,如果想将成员年龄大于37的单元格设置为红色。

1039ff67eea2138e1f97543fc8653567.png

AgeTableCellRenderer的代码

public class AgeTableCellRenderer extends DefaultTableCellRenderer {

private static final long serialVersionUID = -334535475639L;

public Component getTableCellRendererComponent(

JTable table,

Object value,

boolean isSelected,

boolean hasFocus,

int row,

int column) {

// 得到单元格

Component cell =

super.getTableCellRendererComponent(

table,

value,

isSelected,

hasFocus,

row,

column);

// 先把所有单元格设置为白色

cell.setBackground(Color.white);

// 进行渲染

if (table.getColumnName(column).equals("年龄") ) { // 如果列名等于“年龄”

// 取得单元格的文字

String strValue=(String)value;

if(Pattern.matches("\\d+", strValue)){

if(Integer.parseInt(strValue)>37){

// 如果是数字且值大于37,将单元格背景设置为红色

cell.setBackground(Color.red);

}

}

}

return cell;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值