为什么DocumentFilter没有给出预期的结果?

时间:2015-07-18 03:24:35

标签: java swing jtextfield documentfilter

我认为这必须是代码中的一个简单错误或我的误解,但我无法获得DocumentFilter来检测insertString事件。下面是一个用于大写字母的简单过滤器,但这并不像insertString(..)方法似乎永远不会被调用那样重要!

为什么insertString(..)的{​​{1}}方法没有被调用?

过滤器应用于顶部的DocumentFilter。每次调用JTextField时,都应将信息附加到insertString(..)中的JTextArea。目前,文本字段中没有任何操作可以将文本附加到文本区域。

enter image description here

CENTER

1 个答案:

答案 0 :(得分:7)

文本组件使用replaceSelection(...)方法,该方法将调用replace(...)的{​​{1}}方法,该方法将调用AbstractDocument的{​​{1}}方法

replace(...)方法仅在您使用DocumentFilter方法直接更新insertString(...)时调用。

所以实际上你需要覆盖两种方法以确保完成大写转换。