有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java CellBackground替换JTable中的值

所以我想改变特定栏目背景的颜色。因此,我创建了一个新类CellRenderer扩展了DefaultTableCellRenderer,并重写了方法GetTableCellRenderComponent。它工作得很好,当我开始我的项目时,颜色会发生变化,但我的问题是,我还在我的JTable中添加了一个新对象[],现在我只能看到颜色的变化,而不能看到单元格中的值

我该怎么解决这个问题

我的CellRenderer类方法GetTableCellRenderComponent

@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        
        if(column >= 4 && column <= 9) {
           this.setBackground(Color.decode("#5CACEE"));
        }else if (column > 9 && column <= 17) {
           this.setBackground(Color.decode("#B0E2FF"));
        }else {
            this.setBackground(Color.decode("#B0C4DE"));
        }
        
        return this;
    }

在主类中,我将CellRenderer设置为JTable的构造函数

dcr = new MyCellRenderer();
tblData.setDefaultRenderer(Object.class, dcr);

还有我向表中添加值的片段

dtm.addRow(new Object[]{false,"yes","only",ow,"CCSITT3","PANDA_TF001","failed","PANDA","5718200303","1"});

在这里你可以看到图形用户界面

enter image description here


共 (1) 个答案

  1. # 1 楼答案

    修好了!我指的是这个。而不是组件

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
                
                Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
                
                if(column >= 4 && column <= 9) {
                   c.setBackground(Color.decode("#5CACEE"));
                }else if (column > 9 && column <= 17) {
                   c.setBackground(Color.decode("#B0E2FF"));
                }else {
                    c.setBackground(Color.decode("#B0C4DE"));
                }
                
                return c;
            }