0

我用 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 之外我可以从变量中分配,它会改变颜色。我很困惑,不知道该怎么办。请帮我。

4

2 回答 2

4

你需要这个:

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

代替:

if(obj=="on Process")
于 2012-04-13T16:42:59.677 回答
1

@Eng.Fouad 关于区分equals()和是正确的==。您还需要验证您是否为指定列TableModel返回了所需的类型标记,如本示例所示。简单地DefaultTableModel返回Object.class

于 2012-04-14T02:30:08.563 回答