JTable中CheckBox单元格背景色渲染
混迹Java很多年,然而在碰到JTABLE操作的时候,还是有点望而生畏。
这次在项目中,碰到对CheckBox单元格进行背景色渲染,着实让我煞费
了一番心思。以下是解决方法,与需要的同学共享。
[java]
for (int i = 0; i < table.getColumnCount(); i++) {
// 第十二列是预警标志位,用CheckBox控件显示
if (i == 11) {
table.getColumn(table.getModel().getColumnName(i)).setCellRenderer(
new TableCellRenderer() {
private JCheckBox checkBox = new JCheckBox();
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value != null) {
checkBox.setSelected(Boolean.valueOf(value.toString()));
checkBox.setHorizontalAlignment(JCheckBox.CENTER);
if (isSelected) {
// 默认选中颜色
checkBox.setBackground(new Color(10, 36, 106));
} else {
String warn_Flag = (String) table.getModel().getValueAt(row, 13);
if ("1".equals(warn_Flag)) {
checkBox.setBackground(Color.RED);
} else {
checkBox.setBackground(Color.white);
}
}
}
return checkBox;
}
});
} else {
table.getColumn(table.getModel().getColumnName(i)).setCellRenderer(
new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
String warn_Flag = (String) table.getModel().getValueAt(row, 13);
if ("1".equals(warn_Flag)) {
setBackground(Color.RED);
} else {
setBackground(Color.white);
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
});
<span style="white-space:pre"> </span>}}
补充:软件开发 , Java ,