3

我有一个模型实例化为的 JTable:

TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]);

生成数组的位置。但是,目前,您仍然可以编辑单元格。我怎样才能防止这种情况?

谢谢!

4

2 回答 2

5

扩展 JTable 或 DefaultTableModel,覆盖该isCellEditable(int row, int column)方法,并为您不希望用户能够编辑的单元格返回 false。

例如,如果您不希望用户能够修改第二列,那么您可以执行以下操作:

@Override
public boolean isCellEditable(int row, int column) {
   if (column == 1) {
      return false;
   }  else {
      return true;
   }
}

请注意,根据 mre 的评论,上述方法可以被压缩并重写为:

@Override
public boolean isCellEditable(int row, int column) {
   return (column != 1);
}

如果您不希望用户能够编辑任何单元格,那么只需让此方法始终返回 false:

// anonymous inner class example
TableModel ss = new DefaultTableModel(myArray[][], myHeaderArray[]) {
    @Override
    public boolean isCellEditable(int row, int column) {
       return false;
    }
};
于 2012-03-22T22:35:38.517 回答
2

子类化或创建匿名版本DefaultTableModel并覆盖该isCellEditable方法。

于 2012-03-22T22:36:39.520 回答