扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
来源:中国IT实验室 2013年2月22日
关键字: java
ZDNet至顶网软件频道 混迹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>}}
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。