Как гласит заголовок, у меня есть JTable
, и я не могу редактировать "произвольные" столбцы.У меня есть 4 столбца, и только первый столбец доступен для редактирования.В первом столбце есть файлы и специальный редактор, в следующих двух столбцах - строки, а в последнем столбце - целые числа.Я использую собственную модель и возвращаю true из метода isCellEditable
.Конечно, сначала я обратился за помощью к нескольким веб-сайтам, но не смог найти ничего, что могло бы помочь.Я использовал исходный код Java, чтобы переопределить несколько JTable
методов и вставить операторы печати.В частности, я обнаружил, что table.editCellAt (row, col) всегда возвращает false, поскольку компонент редактирования, возвращаемый из редактора ячеек, всегда равен нулю.Поэтому я, естественно, попытался заменить редактор, используя table.setDefaultEditor(String.class, new MyEditor())
.Странно, что НЕ работал.Все редакторы для столбцов String по-прежнему были GenericEditor, который JTable использует по умолчанию.Затем я попытался добавить редакторы в каждый столбец, выполнив следующие действия:
TableColumnModel model = table.getColumnModel();
for(int i = 1; i < model.getColumnCount(); i++){
model.getColumn(i).setCellEditor(new MyEditor());
}
Обратите внимание, что i начинается с 1, поскольку в первом столбце уже есть соответствующий редактор.На данный момент у меня нет идей, поэтому я обратился к добрым людям в Stack Overflow за помощью.
Редактировать: я использую DefaultTableModel
, я просто переопределил isCellEditable
, чтобы убедиться, что он всегдавозвращает true (даже если DefaultTableModel
должно делать это по умолчанию).Я сделал это, чтобы уменьшить количество бесполезных, расточительных ответов отладки.Кроме того, тот факт, что один столбец является редактируемым, а другие нет, может указывать на то, что проблема в другом месте.
Редактировать: Возможно, проблема связана с созданием столбца.Профессор предложил изменить setAutoCreateColumnsFromModel
, и это, похоже, решило проблему.