Принудительная прокрутка JScrollBar до заголовка строки - PullRequest
3 голосов
/ 24 января 2012

Я имею дело с JEditorPane для отображения документов HTML, и я создал кнопку, которая прокручивает меня к следующему порту просмотра каждый раз, когда я нажимаю на него, «как будто я переворачиваю страницу книги».

Однако иногда я вижу часть строки в верхней части порта просмотра, поэтому есть ли способ заставить JScrollBar прокрутить до строки впереди?

Я пробовал setBlockIncrement() метод члена, но он не работал вообще.

Вот моя лучшая попытка:

//get the visible rectangle as well as the most bottom right point. 
Rectangle rec = jEditorPane1.getVisibleRect();
Point pt = new Point((int)rec.getX() +(int)rec.getWidth(),(int)rec.getY() +      (int)rec.getHeight());
// get the offset of the most bottom right point 
int off = jEditorPane1.viewToModel(pt);
try {
//get next viewable rectangle and scroll to it 
rec = jEditorPane1.modelToView(off+100);
rec.height = jEditorPane1.getVisibleRect().height;
jEditorPane1.scrollRectToVisible(rec);
} catch (BadLocationException ex) {
Logger.getLogger(NewJFrame2.class.getName()).log(Level.SEVERE, null, ex);
}

1 Ответ

4 голосов
/ 24 января 2012

Думаю, у вас есть позиция в документе, который вы хотите показать.Вы можете получить видимый прямоугольник позиции, используя метод modelToView ().и используйте позицию y, чтобы установить окно просмотра.Например, используйте scrollRectToVisible, передавая y и высоту области просмотра в параметре прямоугольника.

...