方法一
class MyTableCellRenderer extends DefaultTableCellRenderer {
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (row % 2 == 0) {
this.setBackground(Color.RED);
} else {
this.setBackground(Color.GREEN);
}
return this;
}
}
方法二
class MyRenderer extends JLabel implements TableCellRenderer {
public MyRenderer() {
setOpaque(true);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (row % 2 == 0) {
this.setBackground(Color.RED);
} else {
this.setBackground(Color.GREEN);
}
return this;
}
}
这里引出一个不容易发现的问题,如果继承DefaultTableCellRenderer 就能实现隔行显示不同的颜色。如果自己实现接口就不行,根本原因是 opaque( 不透明物) 作怪,所以需要自己手工设置. 当然还要在setDefaultRenderer(yourNeedShowCellColumnClass, new MyRenderer());