当文本发生更改时修改JTextField文本的监听器

3
有什么办法可以在JTextField上添加文本监听器,以便在文本更改时触发并将其作为操作修改JTextField的文本。
我已经尝试使用addInputMethodListener,它似乎是适当的,但似乎不起作用。我还尝试过textField.getDocument().addDocumentListener(),但当我尝试修改textField的文本时,会抛出java.lang.IllegalStateException: Attempt to mutate in notification异常。
1个回答

7

DocumentListeners不能修改JTextComponent的底层文档。你需要使用DocumentFilter

示例


@Reimeus,它不起作用。当我更改textField的文本时,它会引发StackOverFlowError,因为它调用DocumentFilter中的replace,而replace又调用setText,从而导致无限递归。 - Random42
@mKorbel,我已经说过为什么它不能与DocumentListener一起使用(随后也不能与DocumentFilter一起使用)。 - Random42
2
不要在DocumentFilter中调用setText,而是使用超类的replace方法。 - Reimeus
发布一个SSCCE,可以基于我在这里的评论中发布的内容,一切都隐藏在你的代码中,是你的问题,没有人知道它的存在 :-) - mKorbel
@Reimeus 立即去买彩票并购买几张Lotto彩票。 - mKorbel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接