Как остановить редактирование с помощью DefaultCellEditor при нажатии отдельного JBtton

StackOverflow https://stackoverflow.com/questions/377924

Вопрос

Я получил таблицу с пользовательским TableCellEditor (расширяющим DefaultCellEditor) с JFormattedTextField в качестве компонента редактора.

Теперь у меня проблема:когда я нажимаю отдельную кнопку во время редактирования.Когда кнопка нажата, редактор остается "открытым и активным", в то время как я бы хотел, чтобы он прекратил редактирование, чтобы внесенные изменения были доступны для операций, вызванных кнопкой.

Итак, как остановить редактирование при нажатии отдельной кнопки?Я пытался Установите focuslostbehavior(JFormattedTextField.ЗАФИКСИРУЙТЕ) для JFormattedTextField ( форматированное текстовое поле) но, похоже, это не возымело эффекта.

Надеюсь, у кого-нибудь есть несколько хороших идей =)

Это было полезно?

Решение

Вы можете попробовать

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

Другие советы

Спасибо asalamon74, это работает довольно хорошо.

В базе данных Sun об ошибках идут дебаты по этому поводу : Ошибка 4724980:JTable - таблица:Добавьте API для управления тем, что происходит с изменениями, когда таблица теряет фокус. (также найдены другие записи об ошибках).Функция terminateEditOnFocusLost включает поведение "зафиксировать или отменить", которое можно увидеть в исходных текстах Java в классе JTable$CellEditorRemover$CellEditorRemover

И да, несколько странно, что это не задокументировано в API и т.д...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top