В приложении с компонентами Java Swing у меня есть JTextPane
внутри нередактируемого JScrollPane
и некоторые другие поля, в которых пользователь может ввести некоторые критерии. Если пользователь нажимает на определенную кнопку или пункт меню, будет поиск раздела документа в JTextPane
, который соответствует заданным критериям, и если совпадение найдено, раздел будет выделен.Как прокрутить до заданной позиции в документе, отображаемом в JScrollPane
Эта часть решена; Я могу найти соответствующий сегмент документа, узнать, где он начинается и заканчивается (с точки зрения целочисленных смещений), и выделять его.
Но этот выделенный сегмент мог прокручиваться с экрана, и мне нужно, чтобы он прокручивался в пределах видимой части JScrollPane. Я вижу, что есть метод scrollRectToVisible(Rectangle)
на JComponent
, который кажется, что он мог бы выполнить это задание, но я не вижу, как преобразовать из целого целого текста текстового документа в Rectangle
.
Обратите внимание, что это не редактируемая JTextPane, и я не хочу перемещать курсор на выделенный сегмент (пользователь не может видеть курсор в любом случае), я хочу только показать сегмент в пределах видимой области JScrollPane.
Если бы ты не слышал [modelToView (...)] (http://docs.oracle.com/ javase/7/docs/api/javax/swing/plaf/TextUI.html # modelToView (javax.swing.text.JTextComponent, int)) и методы viewToModel (...). Похоже, они подходят для этого случая, упомянутого вами. Взгляните на этот [пример] (http://stackoverflow.com/questions/10462725/actionlistener-for-a-specific-text-inside-a-jtextarea/10463120#10463120) для получения дополнительной информации. –
ModelToView выглядит хорошо! Я попробую это позже сегодня. Пожалуйста, перепишите свой комментарий как отдельный ответ, чтобы я мог его принять, если он работает. – Gigatron