4

我正在编写一个基于 JTextField 的自定义控件。我的 JTextField 使用我自己的 Document 类,从 PlainDocument 派生,这样我就可以处理所有用户输入的覆盖insertString(...)remove(...)方法。

这就是问题所在。处理用户输入后,有时我想将插入符号移动到另一个位置。更好的方法是什么?

默认情况下,文档将插入符号放在最后一个输入旁边。所以我试图将一个字符放在我的目标位置并立即删除它。由于某种原因,它在remove()方法中不起作用......而且代码看起来不太好:)

感谢和建议。

4

2 回答 2

2
  • 似乎没有必要扩展 PlainDocument。只需将DocumentListener添加到 JTextField 的 Document 中,您就可以在 DocumentListener 中声明的 3 个方法中处理用户输入
  • 使用setCaretPosition将插入符号移动到您想要的任何位置
于 2012-09-24T14:14:24.107 回答
2

DocumentFilter如果您想控制用户输入,您实际上应该使用 a 。ADocumentFilter允许您在发生时拦截所有输入。然后,您可以使用JTextField.setCaretPosition(comes from JTextComponent) 设置插入符号位置。只需向您的DocumentFilter实现传递对的引用,JTextField以便它可以为您设置插入符号位置。

DocumentFilter. 此外,还有一个关于 JavaRanch 的示例

于 2012-09-24T14:56:39.890 回答