1.修改颜色的函数有两个,一个是设置背景颜色setBackGroud,另一个是设置字体颜色setForeground
2.使用DefaultTableCellRenderer来修改单元格颜色。
//新建列表现器
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);
if(table.getValueAt(row, column).equals("未验证") && cell.isBackgroundSet()) {
cell.setForeground(Color.BLUE);
}
else if(table.getValueAt(row, column).equals("未通过") && cell.isBackgroundSet()){
cell.setForeground(Color.RED);
}
else if(table.getValueAt(row, column).equals("已通过") && cell.isBackgroundSet()){
cell.setForeground(Color.GREEN);
}
else {
cell.setForeground(Color.BLACK);
}
return cell;
}
};
//内容居中
tcr.setHorizontalAlignment(SwingConstants.CENTER);
//设置列表现器
tableTaskItem.getColumn("脚本状态").setCellRenderer(tcr);
通过上面两端代码就可以根据某一列的内容不同来设置不同颜色字体的单元格。
参考博客:
https://www.cnblogs.com/keweixiaofan/archive/2010/03/25/1694646.html
3.设置某一列不可被编辑,在tableModel中重写方法isCellEditable即可,下面就是第三列可以被编辑
tableModelTaskItem = new DefaultTableModel(vData,vName) {
Class[] columnTypes = new Class[] {
String.class,String.class,Boolean.class
};
public Class getColumnClass(int columnIndex) {
return columnTypes[columnIndex];
}
@Override
public boolean isCellEditable(int row,int column){
return column == 2;
}
};
参考博客:
https://blog.csdn.net/chikuang0023/article/details/100796537