Java 更改单元格颜色在netbeans上不起作用

Java 更改单元格颜色在netbeans上不起作用,java,swing,colors,jtable,tablecellrenderer,Java,Swing,Colors,Jtable,Tablecellrenderer,我用Netbeans创建了桌面应用程序,如果某个单元格的字符串值为“on Process”,我想更改该单元格的颜色。 我试过了 但这并没有改变我以前的桌子 table.getColumnModel().getColumn(7).setCellRenderer(new CustomTableCellRenderer()); 我正在从数据库中获取值并使用 for(int i=0; i<arraylist.size(); i++) { table.setValueAt(status,

我用Netbeans创建了桌面应用程序,如果某个单元格的字符串值为“on Process”,我想更改该单元格的颜色。 我试过了

但这并没有改变我以前的桌子

table.getColumnModel().getColumn(7).setCellRenderer(new CustomTableCellRenderer());
我正在从数据库中获取值并使用

for(int i=0; i<arraylist.size(); i++) {
    table.setValueAt(status, i, 7);
}
它改变了颜色,这很好,但我不能像那样键入它,我需要从变量中设置值。我试过绳子,物体,没用! 我尝试了
toString()
,我尝试了“+状态。。。它只是忽略了我分配给它的东西。 在forloop内部,若我输入“on Process”,它会工作,但在forloop外部,我可以从变量中赋值,它会改变颜色。我很困惑,不知道该怎么办。 请帮帮我。

您需要这个:

if(obj.toString().equals("on Process"))
而不是:

if(obj=="on Process")
你需要这个:

if(obj.toString().equals("on Process"))
而不是:

if(obj=="on Process")

@Eng.Fouad在区分
equals()
=
方面是正确的。您还需要验证您的
TableModel
是否返回指定列所需的值,如下所示。
DefaultTableModel
只返回
对象。class

@Eng.Fouad在区分
equals()
=
方面是正确的。您还需要验证您的
TableModel
是否返回指定列所需的值,如下所示。
DefaultTableModel
只返回
Object.class

谢谢您的回复。但是如果我使用if(obj.toString().equals(“on Process”)),它会抛出NullPointerException@user1290988然后使用,
if(obj!=null&&obj.toString().equals(“on Process”)
谢谢您的回复。但是如果我使用if(obj.toString().equals(“on Process”)),它会抛出NullPointerException。@user1290988然后使用,
if(obj!=null&&obj.toString().equals(“on Process”)
ColumnClass通常是罪魁祸首-在这种情况下不应该这样做,因为OP使用的是每列渲染器。如果数据库中的更新触发了结构更改,那么这可能就是问题所在@user1290988,是吗?@kleopatra是对的:
getCellRenderer()
应该首先找到
TableColumn
的渲染器。
fireTableStructureChanged()
可能会导致“新列的类型可能不同”。没有任何更改可以解释为什么
setValueAt()
使用
String
literal查找列渲染器。ColumnClass通常是罪魁祸首-在这种情况下不应该这样做,因为OP使用的是每列渲染器。如果数据库中的更新触发了结构更改,那么这可能就是问题所在@user1290988,是吗?@kleopatra是对的:
getCellRenderer()
应该首先找到
TableColumn
的渲染器。
fireTableStructureChanged()
可能会导致“新列的类型可能不同”。没有任何更改可以解释为什么
setValueAt()
使用
String
literal查找列渲染器。