DocumentFilter:为什么调用replace()而不调用insertString()?

Avi*_*ohn 5 java swing jtextcomponent documentfilter

我已经实现了一个DocumentFilter子类,当我输入文本时JTextComponent,replace()调用过滤器的方法,而不是insertString()(从不调用).知道为什么会这样吗?

cam*_*ckr 6

insertString(...)当你直接更新文档,通过使用Document.insertString(...)方法调用方法.

replace(...)当用户输入文本或用户调用与文本字段关联的动作(剪切,粘贴)时,通过View的方法(即JTextField)更新Document时,将调用此方法.

我想它总是更容易替换,然后让替换逻辑检查是否需要删除/插入.