转自:http://blog.youkuaiyun.com/moliqin/article/details/2172258
Jtable隔行分别颜色显示
方法一
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());
转自:http://blog.youkuaiyun.com/petehero/article/details/133249
使用static方法,放在常用工具类myUtil中,
只需在表格数据生成后加入myUtil.makeFace(jTable1);即可:
public static void makeFace(JTable table) {
try
{
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer()
{
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column)
{
if(row%2 == 0)
setBackground(Color.white); //设置奇数行底色
else if(row%2 == 1)
setBackground(new Color(206,231,255)); //设置偶数行底色
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column); }
};
for(int i = 0; i < table.getColumnCount(); i++) {
table.getColumn(table.getColumnName(i)).setCellRenderer(tcr);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
//...省略jTable数据显示代码...
//表格数据生成后加入:
myUtil.makeFace(jTable1);
转自:http://dujunbo666.blog.163.com/blog/static/8409899201132682041806/
JTable设置隔行颜色,选中行颜色,以及当前Cell的颜色
public static void setTableRowColor(JTable Table, final Color Color1, final Color Color2, Color SelectedColor,
Color Cellcolor,Color CellfontColor ) {
try {
//1.设置选中行的背景颜色
Table.setSelectionBackground(SelectedColor);
//声明渲染器
DefaultTableCellRenderer tcr = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//为当前Cell时 isSelected为true时行选中,hasFocus为true时table获得光标
if (isSelected && hasFocus && row == table.getSelectedRow() && column == table.getSelectedColumn()) {
//2.设置当前Cell的颜色
Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
c.setBackground(Cellcolor);//设置背景色
c.setForeground(CellfontColor);//设置前景色
return c;
} else {
//3.设置单数行,偶数行的颜色
if (row % 2 == 0) {//偶数行时的颜色
setBackground(Color1);
} else if (row % 2 == 1) {//设置单数行的颜色
setBackground(Color2);
}
return super.getTableCellRendererComponent(table, value,
isSelected, hasFocus, row, column);
}
}
};
//4.设置每一列的渲染器关键的一步,设置了这一步才能生效
for (int i = 0; i < Table.getColumnCount(); i++) {
Table.getColumnModel().getColumn(i).setCellRenderer(tcr);
}
} catch (Exception E) {
e.printStackTrace();
}
}