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
метод.