您的位置:首页 > 编程语言 > Java开发

jTable设置单个单元格颜色

2014-10-30 11:56 323 查看
        尝试Swing已经一星期,感觉Swing里的坑还是很多的,对于我这种刚入门的新手来说,接口确实有些不顺手。

        闲话休提。需求是这样的,绘制一个数据表格,假如其中某个单元格的数据超出阈值,该单元格标红。

        在Swing的库里简略地翻了一阵子的结果是,暂时没找到现成的、设置单个单元格样式的接口,为了设置单个单元格的颜色,需要重载jTable对象中的prepareRenderer函数,根据单元格的行号和列号,设置对应的单元格。
        在这边贴出代码,这段代码设置了第2行第2列的那个单元格为红色,而其余单元格样式保持不变。

String[][] display = {{"a", "b"}, {"c", "d"}};
javax.swing.JTable jTable = new javax.swing.JTable(display, new String[] { "Column1", "Column2"})
{
@Override
public java.awt.Component prepareRenderer(javax.swing.table.TableCellRenderer renderer, int row, int column) {
int modelRow = convertRowIndexToModel(row);
int modelColumn = convertColumnIndexToModel(column);
java.awt.Component comp = super.prepareRenderer(renderer, row, column);
if (!isRowSelected(modelRow)) {
if (modelRow == 1 && modelColumn == 1)                   //此处加入条件判断
comp.setBackground(java.awt.Color.RED);
else                                                     //不符合条件的保持原表格样式
comp.setBackground(generalTable.getBackground());
}
return comp;
}
};

参考资料

        StackFlow上的:custom cell renderer for particular row and column

        对新手来说万能的StackFlow。。看看以前别人提的问题相当有意思,而且只要是基础性的问题,一旦post上去简直就是秒答。。

        PS:很多天见不到谷歌娘本尊,已经没有生活的动力了_(:з」∠)_
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息