Java 使用CellRenderer从jTable中指定颜色的单元格

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

我想同时从一个jtable给特定的单元格着色

例如,列=1且行i+2 i为0到5的单元格

我使用CustomTableCellRenderer成功地为特定单元格着色,如示例所示

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;
            }

        });