Java 使用CellRenderer从jTable中指定颜色的单元格
我想同时从一个jtable给特定的单元格着色 例如,列=1且行i+2 i为0到5的单元格 我使用CustomTableCellRenderer成功地为特定单元格着色,如示例所示Java 使用CellRenderer从jTable中指定颜色的单元格,java,swing,jtable,Java,Swing,Jtable,我想同时从一个jtable给特定的单元格着色 例如,列=1且行i+2 i为0到5的单元格 我使用CustomTableCellRenderer成功地为特定单元格着色,如示例所示 public class CustomTableCellRenderer extends DefaultTableCellRenderer { int x; int y; CustomTableCellRenderer(int x,int y){ //constructor
public class CustomTableCellRenderer extends DefaultTableCellRenderer
{
int x;
int y;
CustomTableCellRenderer(int x,int y){ //constructor
this.x= x;
this.y=y;
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);
if ( ((row == x) && (column == y))) { //test of equivalence of x and y as parameter
cell.setBackground(Color.green);
}
else {
cell.setBackground(Color.WHITE);
}
return cell;
}
}
正在运行代码格式化。你看见了吗。也许它接近你所需要的。我不能很好地理解它,我需要一个工作代码,并感谢请说明问题是什么,问题在哪里,以获得更好的帮助,尽快发布一个简短的,可运行的,可编译的,带有硬编码值的JTable,清楚地描述你的目标
Try this
table.setDefaultRenderer(Object.class, new TableCellRenderer(){
private DefaultTableCellRenderer DEFAULT_RENDERER = new DefaultTableCellRenderer();
private Component comp;
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
Component c = DEFAULT_RENDERER.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
if(isSelected){
c.setBackground(Color.YELLOW);
}else{
if (row%2 == 0){
c.setBackground(Color.WHITE);
}
else {
c.setBackground(Color.LIGHT_GRAY);
} }
return c;
}
});