我已经实现了一个
DocumentFilter
子类,当我在 JTextComponent
中输入文本时,会调用过滤器的 replace()
方法,而不是 insertString()
(从未被调用)。知道这是为什么吗?
当您使用 Document.insertString(...) 方法直接更新文档时,会调用
insertString(...)
方法。
当用户输入文本或用户调用与文本字段关联的操作(剪切、粘贴)时,通过视图(即 JTextField)的方法更新文档时,将调用
replace(...)
方法。
我想总是进行替换然后让替换逻辑检查以查看是否需要删除/插入会更容易。