【问题标题】:JTextField listener when text changes that modifies textField's text当文本更改修改 textField 的文本时 JTextField 侦听器
【发布时间】:2012-12-27 13:00:52
【问题描述】:

知道如何在 JTextField 上添加一个文本侦听器,它会在文本更改时触发,并且作为操作修改 JTextField 的文本。

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

【问题讨论】:

    标签: java swing listener jtextfield documentlistener


    【解决方案1】:

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

    Example

    【讨论】:

    • @Reimeus 它不起作用;它会抛出 StackOverFlowError,因为当我更改 textField 的文本时,它会从调用 DocumentFilterDocumentFilter 调用 replace,从而调用 setText,从而进行无限递归。
    • @mKorbel 我已经说过为什么它不适用于 DocumentListener(以及随后的 DocumentFilter)。
    • 不要在DocumentFilter中调用setText,使用超类中的replace方法。
    • 发布SSCCE,可以根据我在此处评论中的帖子来发帖,一切都隐藏在您的代码中,您的问题,没人知道:-)
    猜你喜欢
    • 2014-03-21
    • 2018-12-21
    • 2021-05-23
    • 1970-01-01
    • 2011-04-26
    • 2015-05-10
    • 2017-04-07
    相关资源
    最近更新 更多