在JTextArea中,插入位置已关闭

时间:2012-03-05 23:58:24

标签: java swing jtextcomponent

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

enter image description here

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

3 个答案:

答案 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());