Сделать Java прокрутку начать в середине прокрутки контента - PullRequest
4 голосов
/ 31 января 2012

У меня есть горизонтальная полоса прокрутки, которая управляет большой панелью (с очень большой шириной и очень маленькой высотой, то есть с горизонтальной панелью).

Я хочу начать полосу прокрутки (когда ручкана максимуме слева) НЕ для того, чтобы начать с начала панели, она прокручивается, а скорее в определенном месте, которое я диктую.То же самое для конца полосы прокрутки (когда ручка максимально справа).

Я считаю, что полоса прокрутки всегда привязана к панели, которую она прокручивает, и я не могу понять, как изменить ееповедение.

РЕДАКТИРОВАТЬ:

В качестве примера, представьте себе нормальную веб-страницу: когда вверху страницы, ручка полосы прокрутки также вверху.Когда внизу, ручка полосы прокрутки находится внизу.Я хочу определить новые ограничения для содержимого, например, когда ручка полосы прокрутки достигает верхнего или нижнего пределов, на странице отображается установленный мною предел вместо реального верхнего и нижнего.

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Как показано в Как использовать панели прокрутки , вы можете использовать метод компонента scrollRectToVisible() для прокрутки до произвольного Rectangle. Вот пример здесь .

Приложение: Как Container, JPanel является довольно взаимозаменяемым, даже если он имеет значительное вложенное содержимое. Один надежный способ обмена контентом на данном уровне - через CardLayout, показанный здесь , здесь и здесь .

3 голосов
/ 06 февраля 2012

Я решил проблему с помощью метода JScrollbar setValues(), который позволяет мне одновременно устанавливать максимальное, минимальное, значение и экстент полосы прокрутки.Устанавливая максимальное и минимальное значения для нужных мне значений, полоса прокрутки ведет себя так, как я хотел / ожидал.

Проблема заключалась в том, что я устанавливал только максимальные и минимальные значения (setMaximum, setMinimum) ипоскольку в модели существует строгая политика, согласно которой минимум <= значение <= значение + экстент <= максимум </em>, эта эстратегия не сработала.

2 голосов
/ 31 января 2012

Можно ли сохранить большую панель в качестве резервного хранилища и скопировать интересующую область в панель, которая фактически реализована в области прокрутки.Таким образом, вам не нужно бороться с поведением полосы прокрутки.

...