简单,实用,详细。争取一篇能用。
首先,JTable自身是没有提供方法改变每一行的前景色和背景色的。
所以必须自己动手:
/** * 简单封装一下方法 * @param table 表格 * @param color 颜色列表 */
public static void setColor(JTable table,Color[] color) {
try {
DefaultTableCellRenderer dtcr = new DefaultTableCellRenderer() {
//重写getTableCellRendererComponent 方法
@Override
public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus,int row, int column) {
//##################### 这里是你需要看需求修改的部分
setBackground(color[row]);
setForeground(Color.WHITE);
//######################
return super.getTableCellRendererComponent(table, value,isSelected, hasFocus, row, column);
}
};
//对每行的每一个单元格
int columnCount = table.getColumnCount();
for (int i = 0; i < columnCount; i++) {
table.getColumn(table.getColumnName(i)).setCellRenderer(dtcr);
}
} catch (Exception e) {
e.printStackTrace();
}
}
Java会自动调用getTableCellRendererComponent(JTable table, Object value, boolean isSelected, oolean hasFocus,int row, int column)对每一个单元格进行渲染,可以认为这在的for循环中。
用法,直接复制在一个类里面,直接调用。
Class Test{
DefaultTableModel dtm=new DefaultTableModel(data,title);
JTable table=new JTable(dtm);
Color[] color={Color.White,Color.RED,/*等等*/};
setColor(table,color);
}