JTextField DocumentListener

Попытка получить значение JTextField по мере его обновления (вставленные символы, удаленные символы, измененные символы), а затем установка его значения.

Я столкнулся с исключением «Попытка мутировать в уведомлении», которое привело меня к:

Однако никогда не следует изменять содержимое текстового компонента из прослушивателя документов. Если вы это сделаете, программа, скорее всего, заблокируется. Вместо этого вы можете использовать форматированное текстовое поле или задать фильтр документа. из здесь

Я использую фильтр документов, чтобы ограничить количество символов JTextField до 12, но я не знаю, как я могу обнаружить изменения в JTextField без использования прослушивателя документов... который является источником исключения

Любой совет или SSCCE для меня?


person Strokes    schedule 10.03.2015    source источник
comment
stackoverflow .com/questions/3519151/   -  person posdef    schedule 10.03.2015
comment
также: stackoverflow.com/questions/6172267/   -  person posdef    schedule 10.03.2015
comment
@posdef Помимо ограничения символов, я хочу запускать событие при удалении/добавлении/изменении символов..   -  person Strokes    schedule 10.03.2015
comment
Используйте вторую ссылку. DocumentFilter является более новым предпочтительным подходом.   -  person camickr    schedule 10.03.2015
comment
I want to fire an event on remove/add/change characters - почему? Вы имеете в виду огонь или прослушивание события? В любом случае DocumentListener вызывается для добавления и удаления текста.   -  person camickr    schedule 10.03.2015


Ответы (1)


Это просто. Оберните логику событий DocumentListener в SwingUtilities.invokeLater(), чтобы предотвратить проблему с попыткой изменить в уведомлении

person StanislavL    schedule 13.03.2015