13

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

在此处输入图像描述

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

4

4 回答 4

1

尝试这个 :

JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
于 2012-08-03T19:55:31.477 回答
1

看一下这个。有用。

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

 Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
 int  caretX = r.x;
 int  caretY = r.y;
于 2012-03-29T14:35:30.237 回答
0

您还可以尝试使用以下内容强制将插入符号放在文本的末尾:

JTextArea displayArea;    
displayArea.setCaretPosition(displayArea.getDocument().getLength());
于 2012-06-12T18:09:58.020 回答
0

我以前在使用 JBuilder 时实际上遇到了同样的问题,插入符号的位置不在它们应该在的位置。

只在windows中文版出现,如果系统是英文版就好了..

要解决它,只需进入 jbuilder 设置,将所有字体更改为中文字体。

不是jbuilder的问题,其他java应用也有,其实是JRE的问题,去JRE/lib目录,修改font.properties或者fontconfig.peroperties.src(取决于不同的jre版本),在那里添加字体将解决这个问题。

我想这不是您问题的答案,但可能发生在某人身上,仅供您参考。

于 2012-03-19T06:57:30.650 回答