Java - JTable - установить ячейку, чтобы запретить редактирование - PullRequest
3 голосов
/ 23 марта 2012

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

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

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

Спасибо!

Ответы [ 2 ]

5 голосов
/ 23 марта 2012

Расширьте 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;
    }
};
2 голосов
/ 23 марта 2012

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

...