Java - JTable - установить ячейку, чтобы запретить редактирование

У меня есть JTable с моделью, созданной как:

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

Где создаются массивы. Однако на данный момент вы все еще можете редактировать ячейки. Как я могу предотвратить это?

Спасибо!

2 ответа

Решение

Расширить JTable или DefaultTableModel, переопределить isCellEditable(int row, int column) метод и вернуть false для ячеек, которые вы не хотите, чтобы пользователь мог редактировать.

Например, если вы не хотите, чтобы пользователь мог изменять 2-й столбец, вы должны сделать что-то вроде:

@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;
    }
};

Подкласс или создать анонимную версию DefaultTableModel и переопределить isCellEditable метод.

Другие вопросы по тегам