更改jtable列头的背景颜色

问题描述:

我有一张有四列的表格,我希望每个列头都是不同的颜色。我只希望列头有颜色,而不是列中其余的单元格。我尝试使用DefaultTableCellRenderer,但它使每个单元格除列头以外都变为红色。我可以在下面的代码中更改哪些内容以便为每个列头单独分配颜色?更改jtable列头的背景颜色

class CustomRenderer extends DefaultTableCellRenderer{ 

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) 
{ 
    Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, 3, 3); 
    c.setBackground(new java.awt.Color(255,72,72)); 
    return c; 
} 

} 

    table.setDefaultRenderer(Object.class, new CustomRenderer()); 
+0

另请参阅此[示例](http://*.com/a/7137801/230513)。 – trashgod 2012-07-20 00:50:52

你不能容易地设置每个人的颜色,我很害怕。

// Get the column header for your specific column 
JTableHeader th = table.getTableHeader(); 
TableColumnModel tcm = th.getColumnModel(); 
TableColumn tc = tcm.getColumn(column); 

/* Create a new renderer for column headers, and 
pass in the column number so you can differntiate 
which column will be which color. */ 
tc.setCellRenderer(new headerCellRenderer(column)); 

虽然这应该适合您的需求。

+0

对不起,我对java很陌生。我收到一个错误“类型TableColumn中的方法setCellRenderer(TableCellRenderer)不适用于参数(headerCellRenderer)”。那是什么意思? – davidVee 2012-07-19 19:36:18

+0

您必须自己实现headerCellRenderer,就像您使用customRenderer一样。 – 2012-07-19 19:38:58

+0

让我确定我正确地理解了你,我需要创建另一个类,类似于CustomRenderer。除了这个新的类将需要能够将一列作为参数? – davidVee 2012-07-19 19:51:41