Как остановить редактирование с DefaultCellEditor, когда нажата отдельная JBtton - PullRequest
5 голосов
/ 18 декабря 2008

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

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

Так, как заставить редактирование быть остановлено, когда отдельная кнопка нажата. Я попытался setFocusLostBehavior (JFormattedTextField.COMMIT) для JFormattedTextField , но, похоже, это не сработало.

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

Ответы [ 3 ]

12 голосов
/ 18 декабря 2008

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

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

3 голосов
/ 18 декабря 2008

Спасибо asalamon74, это прекрасно работает.

В Sun Bug Database есть спор по этому вопросу: Ошибка 4724980: JTable: добавление API для управления тем, что происходит с правками, когда таблица теряет фокус. (также обнаруживаются другие записи об ошибках) TerminateEditOnFocusLost включает поведение «принять или отменить», которое можно увидеть в источниках Java в классе JTable $ CellEditorRemover

И да, странно, что это не документировано в API и т. Д. *

0 голосов
/ 14 августа 2009
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...