Расширьте 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;
}
};