У меня есть BorderPane с левой и центральной частью, обе панели ScrollPanes. Как прокручивать их одной полосой прокрутки (вертикальной). Или как получить доступ к одной из полос прокрутки?
JavaFX ScrollPane – как использовать одну полосу прокрутки для прокрутки 2 панелей прокрутки?
Ответы (2)
вы можете привязать свойство vScrollBar панели прокрутки1 (sp1) и установить измененное значение для другого свойства панели прокрутки vScrollbar.
Пример кода: этот код автоматически изменяет положение vScrollbar SP2 при изменении положения vScrollbar Sp1.
DoubleProperty vPosition = new SimpleDoubleProperty();
vPosition.bind(sp1.vvalueProperty());
vPosition.addListener(new ChangeListener() {
@Override
public void changed(ObservableValue arg0, Object arg1, Object arg2) {
sp2.setVvalue((double) arg2);
}
});
Подсказка, чтобы получить одну полосу прокрутки для прокрутки двух панелей прокрутки: определите вертикальную полосу прокрутки, а затем скройте (может быть установлена прозрачность на ноль или что-то еще ..) vsscrollbars для двух панелей прокрутки. а затем привязать к определенным изменениям полосы прокрутки и установить эти измененные значения для обеих полос прокрутки против полос прокрутки, как указано выше.
changed
, по-видимому, никогда не вызывается. Любые идеи, почему это может быть?
- person Maverick283; 25.09.2014
Ответ @invariant у меня не сработал. Но код, написанный ниже, сработал.
ScrollPane sp1 = new ScrollPane();
ScrollPane sp2 = new ScrollPane();
sp1.hvalueProperty().bindBidirectional(sp2.hvalueProperty());
При привязке двух компонентов друг к другу они прокручиваются вместе по горизонтали. Это будет работать для вертикального корпуса.