【问题标题】:Java - JTable - Set a cell to not allow editingJava - JTable - 将单元格设置为不允许编辑
【发布时间】:2012-04-07 13:29:19
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

    标签: java arrays swing jtable defaulttablemodel


    【解决方案1】:

    扩展 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;
        }
    };
    

    【讨论】:

    • 在你的第一个例子中,它可能只是return !(column == 1);
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多