Подтвердить что ты не робот

Принудительное JTable для "фиксации" данных для модели, пока она еще находится в режиме редактирования

У меня есть JTable, как показано ниже.

alt text

Итак, пока JTable все еще находится в режиме редактирования (курсор клавиатуры мигает в столбце "Дивиденд" ), нажатие "ОК" напрямую не будет передавать данные в модель таблицы. При нажатии OK просто закройте диалоговое окно.

Мне нужно нажать ENTER явно, чтобы зафиксировать данные в модели таблицы.

Пока JTable все еще находится в режиме редактирования, перед закрытием диалогового окна я могу сказать JTable, сказав: "Эй, настало время для вас внести изменения в вашу модель"

Исходный код этого диалогового окна выглядит следующим образом Исходный код диалогового окна. Посмотрите jButton1ActionPerformed для исполняемого кода при нажатии OK.

4b9b3361

Ответ 1

Я не уверен, что это сработает (было бы неплохо иметь SCCE), но попробуйте следующее:

TableCellEditor editor = table.getCellEditor();
if (editor != null) {
  editor.stopCellEditing();
}

Ответ 2

Чтобы весь стабильный стоп полностью редактировался в любом состоянии (редактирование или нет), вы можете вызвать редактирование:

    table.editingStopped(new ChangeEvent(table));

Таким образом, вам не нужно проверять наличие редактора/состояния/etc.

Ответ 3

Редактирование таблицы остановок дает пару подходов.

РЕДАКТИРОВАТЬ

Пример из статьи:

table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

Пример из статьи:

if (table.isEditing())
    table.getCellEditor().stopCellEditing();