插入记号位置在 JTextArea 中处于关闭状态

2022-09-04 23:30:01

我正在将 JTextArea 添加到具有布局管理器的组件中,该布局管理器遵循首选大小和位置。但是,在键入几个“宽”字母(例如“m”)后,JTextArea中显示的插入符号的位置变得错误:

enter image description here

这是在从左侧键入所有字母之后,实际的插入记号位置是在“d”之后。在这种情况下,JTextArea比文本宽得多。不确定它是否可能相关,但使用的字体是Arial,大小为11,纯样式,并且在将JTextArea添加到父容器之前正在设置。任何想法可能导致这种情况?


答案 1

试试这个 :

JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);

答案 2

看看这个。它的工作原理。

我已经在我的一个应用程序中使用它。

 Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
 int  caretX = r.x;
 int  caretY = r.y;

推荐