我正在编写一个基于JTextField的自定义控件。我的JTextField使用我自己的Document类,派生自PlainDocument,以便我可以处理覆盖insertString(...)
和remove(...)
方法的所有用户输入。
这是问题所在。在我处理用户输入后,有时我想将插入符移动到另一个位置。有什么更好的方法呢?
默认情况下,Document将插入符号放在最后一个输入旁边。所以我试着把一个字符放到我的目标位置并立即删除它。由于某种原因,它在remove()
方法中不起作用......并且代码看起来不太好:))
感谢和建议。
答案 0 :(得分:2)
答案 1 :(得分:2)
如果要控制用户输入,您实际上应该使用DocumentFilter
。 DocumentFilter
允许您在发生时拦截所有输入。然后,您可以使用JTextField.setCaretPosition
(来自JTextComponent
)来设置插入位置。只需将您的DocumentFilter
实施内容传递给JTextField
,即可为您设置插入位置。