我认为prepareRenderer(...)
引起了麻烦。我创建jTable的代码是:-
jTable1 = new javax.swing.JTable(){
public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer(renderer, row, column);
if(column==0){
c.setBackground(new java.awt.Color(223, 223, 223));
c.setForeground(new Color(121, 63, 63));
c.setFont(new java.awt.Font("Tahoma", java.awt.Font.BOLD, 12));
}else{
c.setBackground(new java.awt.Color(235, 235, 235));
c.setFont(new java.awt.Font("Tahoma", java.awt.Font.PLAIN, 12));
}
return c;
}
};
现在,当我使用:-
jTable1.setSelectionBackground(Color.BLACK);
这没用。知道如何解决吗?
编辑:完全删除
prepareRenderer(...)
方法后,我测试了程序,我可以进行黑色选择 最佳答案
这是DefaultTableCellRenderer的代码片段
if (isSelected) {
super.setForeground(fg == null ? table.getSelectionForeground()
: fg);
super.setBackground(bg == null ? table.getSelectionBackground()
: bg);
}
如您所见,选择背景设置为渲染器(实际上在您的调用super.prepareRenderer(renderer,row,column)中)
之后,您可以根据列将背景重置为一种颜色。但是,无论哪个列号,您实际上都会替换选择背景。
如果column!= 0调用
c.setBackground(getSelectionBackground());