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