我将JTextArea添加到具有布局管理器的组件,该布局管理器尊重首选大小和位置。但是,在键入几个“宽”字母(例如'm')后,显示的插入符号在JTextArea中的位置会出错:
这是在输入左边的所有字母后,实际的插入位置在'd'之后。在这种情况下,JTextArea比文本宽得多。不确定它是否相关,但使用的字体是Arial,大小11,普通样式,并且在将JTextArea添加到父容器之前正在设置。可能导致这种情况的任何想法?
答案 0 :(得分:1)
检查一下。有用。
我在我的一个应用程序中使用过它。
Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
int caretX = r.x;
int caretY = r.y;
答案 1 :(得分:1)
试试这个:
JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
答案 2 :(得分:0)
您还可以尝试使用类似下面的内容强制将插入符号放在文本的末尾:
JTextArea displayArea;
displayArea.setCaretPosition(displayArea.getDocument().getLength());