更改单元格颜色对netbeans不起作用

时间:2012-04-13 14:51:07

标签: java swing colors jtable tablecellrenderer

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

class CustomTableCellRenderer extends DefaultTableCellRenderer{
    public Component getTableCellRendererComponent (JTable table, Object obj,
            boolean isSelected, boolean hasFocus, int row, int column) {
        Component cell = super.getTableCellRendererComponent(
            table, obj, isSelected, hasFocus, row, column);
        if (obj=="on Process") {
            cell.setBackground(Color.green);
        } 
        return cell;
    }
}

但它没有改变我使用的表格

table.getColumnModel().getColumn(7).setCellRenderer(new CustomTableCellRenderer());

我从数据库获取值并使用

for(int i=0; i<arraylist.size(); i++) {
    table.setValueAt(status, i, 7);
}

此状态为String,如果我手动输入:

table.setValueAt("on Process", i, 7);

它改变颜色,很好,但是我不能那样输入,我需要从变量设置值。我试过String,Object,没用! 我试过toString(),我试过“”+状态,......它只是忽略了我分配给它的东西。 在forloop里面,如果我键入“on Process”它可以工作,但在forloop之外我可以从变量分配,它会改变颜色。我很困惑,不知道该怎么做。 请帮帮我。

2 个答案:

答案 0 :(得分:4)

你需要这个:

if(obj.toString().equals("on Process"))

而不是:

if(obj=="on Process")

答案 1 :(得分:1)

@ Eng.Fouad关于区分equals()==是正确的。您还需要验证您的TableModel是否为您指定的列返回了所需的type token,如example所示。 DefaultTableModel只返回Object.class