更改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());
你不能容易地设置每个人的颜色,我很害怕。
// 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));
虽然这应该适合您的需求。
对不起,我对java很陌生。我收到一个错误“类型TableColumn中的方法setCellRenderer(TableCellRenderer)不适用于参数(headerCellRenderer)”。那是什么意思? – davidVee 2012-07-19 19:36:18
您必须自己实现headerCellRenderer,就像您使用customRenderer一样。 – 2012-07-19 19:38:58
让我确定我正确地理解了你,我需要创建另一个类,类似于CustomRenderer。除了这个新的类将需要能够将一列作为参数? – davidVee 2012-07-19 19:51:41
另请参阅此[示例](http://stackoverflow.com/a/7137801/230513)。 – trashgod 2012-07-20 00:50:52