Java 更改JTable单元格颜色时的不同更改

Java 更改JTable单元格颜色时的不同更改,java,swing,Java,Swing,在我的Java程序中,我在配置表单元格的颜色方面遇到了一个问题。 如下所示,我在单元格中有4个不同的列组件。 当我改变所有这些单元格的颜色时,只有column1的颜色改变了 DefaultTableModel tableModel = new DefaultTableModel(columns,0){ @Override public Class<?> getColumnClass(int column) { switch(column) {

在我的Java程序中,我在配置表单元格的颜色方面遇到了一个问题。 如下所示,我在单元格中有4个不同的列组件。 当我改变所有这些单元格的颜色时,只有column1的颜色改变了

DefaultTableModel tableModel = new DefaultTableModel(columns,0){
    @Override
    public Class<?> getColumnClass(int column) {
        switch(column) {
            case 0: return String.class;
            case 1: return ImageIcon.class;
            case 2: return Integer.class;
            case 3: return Integer.class;
            default: return Object.class;
        }
    }
};
所以问题是如何更改所有列的颜色

先谢谢你

如下所示,我在单元格中有4个不同的列组件。当我改变所有这些单元格的颜色时,只有column1的颜色改变了

DefaultTableModel tableModel = new DefaultTableModel(columns,0){
    @Override
    public Class<?> getColumnClass(int column) {
        switch(column) {
            case 0: return String.class;
            case 1: return ImageIcon.class;
            case 2: return Integer.class;
            case 3: return Integer.class;
            default: return Object.class;
        }
    }
};
渲染器仅用于指定的类。对于没有特定渲染器的类,Object.class被指定为一个catch all类

在您的情况下,它将仅用于
String
对象。
图标
整数
类已经有了自定义的呈现器

您还可以添加:

table1.setDefaultRenderer(Icon.class, new ColorChange);
table1.setDefaultRenderer(Integer.class, new ColorChange);
但是,如果执行此操作,将丢失这些渲染器的自定义格式。如果要继续使用此方法,则需要“IconColorChange”和“IntegerColorChange”渲染器

相反,我建议您寻找一种解决方案,它允许您在仍然使用渲染器或表的自定义格式的情况下进行行级着色。这不需要创建自定义渲染器。

如果(行%2==0){c.setBackground(Color.WHITE);
Nimbus PLAF(自动)为表格行提供备用颜色。
table1.setDefaultRenderer(Icon.class, new ColorChange);
table1.setDefaultRenderer(Integer.class, new ColorChange);