Отключение прокрутки до конца текста в JEditorPane - PullRequest
4 голосов
/ 18 марта 2011

Привет
Я использовал JEditorPane с HTMLEditorKit для отображения текста HTML с возможностью переноса текста.
Проблема в том, что когда я устанавливаю его содержимое с помощью метода .setText, он автоматически прокручивается до конца этого текста.
Как я могу отключить это?

Спасибо.

Ответы [ 3 ]

5 голосов
/ 18 марта 2011

Вы можете попробовать этот трюк, чтобы сохранить положение курсора перед setText(), а затем восстановить его после добавления текста в компонент:

int caretPosition = yourComponent.getCaretPosition();
yourComponent.setText(" your long text  ");
yourComponent.setCaretPosition(Math.min(caretPosition, text.length()));
3 голосов
/ 20 февраля 2013

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

final DefaultCaret caret = (DefaultCaret) yourEditorPane.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_UPDATE);
//!!!!text must be set AFTER update policy has been set!!!!!
yourEditorPane.setText(text);
1 голос
/ 18 марта 2011

Попробуйте после setText:

Rectangle r = modelToView(0); //scroll to position 0, i.e. top
if (r != null) {
  Rectangle vis = getVisibleRect(); //to get the actual height
  r.height = vis.height;
  scrollRectToVisible(r);
}
...