Положение каретки в JTextArea отключено - PullRequest
13 голосов
/ 06 марта 2012

Я добавляю JTextArea к компоненту с менеджером макета, который учитывает предпочтительный размер и местоположение.Однако положение отображаемой каретки в JTextArea становится ошибочным после ввода нескольких «широких» букв (например, «m»):

enter image description here

Это после того, как вы ввели всебуквы слева и фактическая позиция каретки после 'd'.JTextArea в этом случае намного шире, чем текст.Не уверен, что это может быть уместно, но используется шрифт Arial, размер 11, простой стиль и устанавливается перед добавлением JTextArea в родительский контейнер.Есть идеи, что может быть причиной этого?

Ответы [ 4 ]

1 голос
/ 03 августа 2012

Попробуйте это:

JTextArea textArea;
DefaultCaret caret = (DefaultCaret) textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.ALWAYS_UPDATE);
1 голос
/ 29 марта 2012

Проверьте это.Оно работает.

Я использовал это в одном из своих приложений.

 Rectangle r = textArea.modelToView( textArea.getCaretPosition() );
 int  caretX = r.x;
 int  caretY = r.y;
0 голосов
/ 12 июня 2012

Вы также можете попытаться принудительно поместить каретку в конец текста, используя что-то вроде следующего:

JTextArea displayArea;    
displayArea.setCaretPosition(displayArea.getDocument().getLength());
0 голосов
/ 19 марта 2012

Я действительно сталкиваюсь с той же проблемой при использовании JBuilder раньше, позиция каретки находится не в том положении, в котором они должны быть.

Это произошло только для китайской версии Windows, если система английская, это нормально ..

Чтобы решить эту проблему, просто перейдите к настройке jbuilder, измените все шрифты на китайский шрифт.

Это не проблема jbuilder, это происходит и с другим java-приложением, на самом деле это проблема JRE, она идет в каталог JRE / lib, изменяет font.properties или fontconfig.peroperties.src (зависит от другой версии jre), добавьте туда шрифт, который решит эту проблему.

Я думаю, это не ответ на ваш вопрос, но, возможно, кто-то случится, просто для вашей справки.

...