В приложении с компонентами Java Swing у меня есть JTextPane
внутри нередактируемого JScrollPane
и некоторые другие поля, в которых пользователь может ввести некоторые критерии. Если пользователь нажимает на определенную кнопку или элемент меню, будет поиск раздела документа в JTextPane
который соответствует заданным критериям, и если совпадение найдено, раздел будет выделен.
Эта часть решена; Я могу найти соответствующий сегмент документа, узнать, где он начинается и заканчивается (с точки зрения целочисленных смещений), и выделять его.
Но этот выделенный сегмент мог прокручиваться с экрана, и мне нужно, чтобы он прокручивался в пределах видимой части JScrollPane. Я вижу, что на JComponent
существует метод scrollRectToVisible(Rectangle)
который, похоже, может выполнять эту работу, но я не вижу, как преобразовать из текстового положения позиции целое в Rectangle
.
Обратите внимание, что это не редактируемый JTextPane, и я не хочу перемещать курсор на выделенный сегмент (пользователь не может видеть курсор в любом случае), я хочу только показать сегмент в пределах видимой области JScrollPane.
Ну, вы можете использовать modelToView (…), который может вернуть один объект Rectangle
, который вы можете использовать для своего случая.
Вот один пример @camickr относительно того же
Еще один пример здесь
Если ваши текстовые строки имеют одинаковую высоту, то значение y для Rectangle – это позиция документа * высота строки.
Если ваши текстовые строки не имеют одинаковой высоты, то значение y прямоугольника представляет собой сумму высот линии до, но не включая позицию документа.
Значение x для Rectangle будет равно нулю или некоторому смещению, которое имеет смысл для вашего текста.