2013-01-13 147 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