2013-01-13 175 views
3

任何想法如何将文本监听器添加到JTextField上,触发文本更改时以及动作修改JTextField的文本。JTextField监听器,用于修改textField文本的文本更改

我试过使用addInputMethodListener这似乎是合适的,但它似乎并没有工作。我也试过textField.getDocument().addDocumentListener(),但是当我尝试修改textField的文本时,会抛出java.lang.IllegalStateException: Attempt to mutate in notification

回答

7

DocumentListeners不允许修改JTextComponent的基础文档。您正在寻找一个DocumentFilter

Example

+0

1 [DocumentListeners](http://stackoverflow.com/a/8013129/714968),[的DocumentFilter](http://stackoverflow.com/a/9430683/714968) – mKorbel

+0

@Reimeus它不起作用;它会抛出'StackOverFlowError',因为当我改变textField的文本时,它会调用'DocumentFilter'的'replace',它调用'setText'并因此调用无限递归。 – m3th0dman

+0

@mKorbel我已经说过为什么它不能和DocumentListener一起使用(并随后使用DocumentFilter)。 – m3th0dman