Jtable控制背景色


一个监控server的程序,需要更加server的不同健康级别修改底色,这可难坏我这个以前做bs结构的人了。

在google里找了一下,一下是解决的最后方法
先定义个render处理器,在render里根据cell的datamodel来处理不同的颜色变化

引用:
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
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);

String svalue = (String)table.getModel().getValueAt(row, 2);
//实验代码
if(svalue!=null && svalue.equals("连接故障"))
{
cell.setBackground(Color.RED);
}
else
{
cell.setBackground(Color.WHITE);
}

return cell;
}
};

table.setDefaultRenderer(Object.class, tcr);


在listener里加入我们需要的datamodel的处理,
tableModel.fireTableDataChanged();这里是刷新row,否则的话,只有数据变化或者系统事件相关的cell变 颜色

引用:
if(serverinfo.getHost().equals(server) && serverinfo.getPort() == port)
{
try
{
int failCount = (tableModel.getValueAt(ind, 3) instanceof String)?1:((Integer)tableModel.getValueAt(ind, 3) + 1);
Date d = new Date();
Date start = String.valueOf(tableModel.getValueAt(ind, 5)).trim().length()==0?d:str2Date(String.valueOf(tableModel.getValueAt(ind, 5)));

tableModel.setValueAt("连接故障", ind, 2);
tableModel.setValueAt(failCount, ind, 3);
tableModel.setValueAt((d.getTime()-start.getTime())/1000, ind, 4);
//tableModel.setValueAt(failCount, ind, 5);
tableModel.setValueAt(formatTime(d), ind, 6);

tableModel.fireTableDataChanged();

//Toolkit.getDefaultToolkit().beep();

warningIndex.put(ind, true);
}
catch (Exception e) {
e.printStackTrace();
}
}


上面是基本的代码,后来根据需要具体了一些内容。

google离开,还是改不了使用google的习惯,杯具的是,访问google经常出错。不知道还是不是政治问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

inthirties

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值