Как прокручивать до заданной позиции в документе, отображаемом в JScrollPane

Вопрос:

В приложении с компонентами Java Swing у меня есть JTextPane внутри нередактируемого JScrollPane и некоторые другие поля, в которых пользователь может ввести некоторые критерии. Если пользователь нажимает на определенную кнопку или элемент меню, будет поиск раздела документа в JTextPane который соответствует заданным критериям, и если совпадение найдено, раздел будет выделен.

Эта часть решена; Я могу найти соответствующий сегмент документа, узнать, где он начинается и заканчивается (с точки зрения целочисленных смещений), и выделять его.

Но этот выделенный сегмент мог прокручиваться с экрана, и мне нужно, чтобы он прокручивался в пределах видимой части JScrollPane. Я вижу, что на JComponent существует метод scrollRectToVisible(Rectangle) который, похоже, может выполнять эту работу, но я не вижу, как преобразовать из текстового положения позиции целое в Rectangle.

Обратите внимание, что это не редактируемый JTextPane, и я не хочу перемещать курсор на выделенный сегмент (пользователь не может видеть курсор в любом случае), я хочу только показать сегмент в пределах видимой области JScrollPane.

Лучший ответ:

Ну, вы можете использовать modelToView (…), который может вернуть один объект Rectangle, который вы можете использовать для своего случая.

Вот один пример @camickr относительно того же

Еще один пример здесь

Ответ №1

Если ваши текстовые строки имеют одинаковую высоту, то значение y для Rectangle – это позиция документа * высота строки.

Если ваши текстовые строки не имеют одинаковой высоты, то значение y прямоугольника представляет собой сумму высот линии до, но не включая позицию документа.

Значение x для Rectangle будет равно нулю или некоторому смещению, которое имеет смысл для вашего текста.

Оцените статью
TechArks.Ru
Добавить комментарий