Ответ 1
Я не уверен, что это сработает (было бы неплохо иметь SCCE), но попробуйте следующее:
TableCellEditor editor = table.getCellEditor();
if (editor != null) {
editor.stopCellEditing();
}
У меня есть JTable, как показано ниже.
Итак, пока JTable все еще находится в режиме редактирования (курсор клавиатуры мигает в столбце "Дивиденд" ), нажатие "ОК" напрямую не будет передавать данные в модель таблицы. При нажатии OK просто закройте диалоговое окно.
Мне нужно нажать ENTER явно, чтобы зафиксировать данные в модели таблицы.
Пока JTable все еще находится в режиме редактирования, перед закрытием диалогового окна я могу сказать JTable, сказав: "Эй, настало время для вас внести изменения в вашу модель"
Исходный код этого диалогового окна выглядит следующим образом Исходный код диалогового окна. Посмотрите jButton1ActionPerformed
для исполняемого кода при нажатии OK.
Я не уверен, что это сработает (было бы неплохо иметь SCCE), но попробуйте следующее:
TableCellEditor editor = table.getCellEditor();
if (editor != null) {
editor.stopCellEditing();
}
Чтобы весь стабильный стоп полностью редактировался в любом состоянии (редактирование или нет), вы можете вызвать редактирование:
table.editingStopped(new ChangeEvent(table));
Таким образом, вам не нужно проверять наличие редактора/состояния/etc.
Редактирование таблицы остановок дает пару подходов.
РЕДАКТИРОВАТЬ
Пример из статьи:
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Пример из статьи:
if (table.isEditing())
table.getCellEditor().stopCellEditing();