У меня проблема с реализацией нужного мне поведения в упомянутых компонентах.Поведение, которое я хочу, это:1) По умолчанию, когда новый контент добавляется в JTextArea, он автоматически прокручивается до последней вставленной строки.Это мне удалось сделать с:DefaultCaret caret = (DefaultCaret)textArea.getCaret();
caret.setUpdatePolicy(DefaultCaret.NEVER_ALWAYS);
2) Когда пользователь с помощью мыши или клавиатуры перемещает полосу прокрутки, автоматическая прокрутка должна быть отключена, и отображается текст, на который прокручивался пользователь (здесь я попытался реализовать AdjustmentListener, который в действии устанавливал DefaultCaret.NEVER_NEVER
, но после установки его на НИКОГДА,Я на самом деле никогда не мог бы прокрутить куда-нибудь)3) Когда пользователь перемещает полосу прокрутки к последней вставленной строке, поведение по умолчанию, упомянутое в строке 1), должно быть восстановлено
Единственное, что я видел, чтобы сделать это, это как-то рассчитать положение каретки в зависимости от длины документа итекущее положение свитка, но, если честно, мне не очень нравится этот путь.Я хотел бы знать, есть ли другой, более изящный и правильный метод, делающий это?
Спасибо, Сергей.
РЕДАКТИРОВАТЬ: Я нашел очень похожий вопрос и ответ на него с примером исходного кода.Ответ можно найти здесь