-2

我使用“设计”选项在 Eclipse 中创建了 JTable,现在我想让一些单元格不可编辑。这是我的代码:

    public Frame(int choice) {
       initComponents();
       defaultModel = (DefaultTableModel) m0.getModel();
       if (choice == 0) {
        defaultModel.setColumnCount(7);
        defaultModel.removeRow(6);
       }
    defaultModel.isCellEditable(2,2);
    defaultModel.isCellEditable(3,3);

}
public boolean isCellEditable(int row, int column) {
    return false;
}

单元格 (2,2) 和 (3,3) 应该是不可编辑的。但它不起作用。有人可以帮忙吗?

4

1 回答 1

1

你看到这里的问题了吗?:

public boolean isCellEditable(int row, int column) {
    return false;  // !!!!!!!
}

单元格 (2,2) 和 (3,3) 应该是可编辑的。但它不起作用。有人可以帮忙吗?

您使用 isCellEditable(...) 方法覆盖将单元格设置为不可编辑,然后您莫名其妙地想知道为什么它们不可编辑。抱歉,这有点疯狂。解决方案是更改该isCellEditable(...)方法返回的内容,以便它执行您想要的操作。如果您希望它可编辑 2,2 和 3,3,则将该逻辑放入上述方法中。


编辑
我看到你已经编辑了你的问题,现在它是:

public boolean isCellEditable(int row, int column) {
    return false;
}

单元格 (2,2) 和 (3,3) 应该是不可编辑的。但它不起作用。有人可以帮忙吗?

这当然会改变一切。我的猜测是您的 isCellEditable 不是 JTable 或其模型的真正覆盖。您是否尝试过在它之前添加 @Override 注释?你能告诉我们它实际上是如何覆盖当前的 JTable 或其模型的吗?您需要证明此方法在扩展 JTable 或其模型的类中,并且这实际上是正在使用的类。

于 2013-05-21T14:29:39.473 回答