【问题标题】:JTextField DocumentListenerJTextField 文档监听器
【发布时间】:2015-05-12 00:58:39
【问题描述】:

尝试在更新 JTextField 时获取它的值(插入字符、删除字符、更改字符),然后设置它的值。

我遇到了“尝试在通知中变异”异常,这导致我:

但是,您永远不应该在文档侦听器中修改文本组件的内容。如果这样做,程序很可能会死锁。相反,您可以使用格式化的文本字段或提供文档过滤器。来自here

我正在使用文档过滤器将 JTextField 的字符数限制为 12,但我不知道如何在不使用文档侦听器的情况下检测 JTextField 上的更改...这是异常的来源

对我有什么建议或 SSCCE 吗?

【问题讨论】:

  • @posdef 除了限制我想在删除/添加/更改字符时触发事件的字符..
  • 使用第二个链接。 DocumentFilter 是较新的首选方法。
  • I want to fire an event on remove/add/change characters - 为什么?你的意思是“开火”还是“听”一个事件?在任何情况下,都会调用 DocumentListener 来添加和删除文本。

标签: java jtextfield jtextpane documentlistener documentfilter


【解决方案1】:

这很简单。将 DocumentListener 的事件逻辑包装到 SwingUtilities.invokeLater() 中,以防止 Attempt to mutate in notificatio 问题

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 2012-06-01
    • 1970-01-01
    • 2014-11-22
    • 2012-06-06
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多