我正在将 JTextArea 添加到具有尊重首选大小和位置的布局管理器的组件中。但是,在键入几个“宽”字母(例如“m”)后,JTextArea 中显示的插入符号的位置会变得错误:
这是在从左侧键入所有字母之后,实际插入符号位置在“d”之后。在这种情况下,JTextArea 比文本宽得多。不确定它是否相关,但使用的字体是 Arial,大小 11,普通样式,并且是在将 JTextArea 添加到父容器之前设置的。有什么想法可能导致这种情况吗?
我正在将 JTextArea 添加到具有尊重首选大小和位置的布局管理器的组件中。但是,在键入几个“宽”字母(例如“m”)后,JTextArea 中显示的插入符号的位置会变得错误:
这是在从左侧键入所有字母之后,实际插入符号位置在“d”之后。在这种情况下,JTextArea 比文本宽得多。不确定它是否相关,但使用的字体是 Arial,大小 11,普通样式,并且是在将 JTextArea 添加到父容器之前设置的。有什么想法可能导致这种情况吗?
尝试这个 :
JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
看一下这个。有用。
我在我的一个应用程序中使用了它。
Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
int caretX = r.x;
int caretY = r.y;
您还可以尝试使用以下内容强制将插入符号放在文本的末尾:
JTextArea displayArea;
displayArea.setCaretPosition(displayArea.getDocument().getLength());
我以前在使用 JBuilder 时实际上遇到了同样的问题,插入符号的位置不在它们应该在的位置。
只在windows中文版出现,如果系统是英文版就好了..
要解决它,只需进入 jbuilder 设置,将所有字体更改为中文字体。
不是jbuilder的问题,其他java应用也有,其实是JRE的问题,去JRE/lib目录,修改font.properties或者fontconfig.peroperties.src(取决于不同的jre版本),在那里添加字体将解决这个问题。
我想这不是您问题的答案,但可能发生在某人身上,仅供您参考。