2012-07-19 143 views
0

我有一張有四列的表格,我希望每個列頭都是不同的顏色。我只希望列頭有顏色,而不是列中其餘的單元格。我嘗試使用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://stackoverflow.com/a/7137801/230513)。 – trashgod 2012-07-20 00:50:52

回答

1

你不能容易地設置每個人的顏色,我很害怕。

// 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