将JTable单元的一部分设置为不可编辑

时间:2013-05-21 14:27:55

标签: java swing jtable cells

我使用“设计”选项在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)应该是不可编辑的。但它不起作用。有人可以帮忙吗?

1 个答案:

答案 0 :(得分: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或其模型的类中,并且这实际上是正在使用的类。