我需要知道如何更改ScrollPane
对象用于上下移动内容的数量。例如,ScrollBar
有两种方法:
scrollBar.setUnitIncrement(10);
scrollBar.setBlockIncrement(50);
如何使用ScrollPane
代替ScrollBar
?
答案 0 :(得分:3)
有同样的问题而无法找到答案。最后从Erik提供的link中得到了正确的方法,并根据我的需要进行了调整。
由于scrollPane本身没有触发“setOnScroll”-Event(可能是因为它在这之前消耗掉了),我不得不在ScrollPane的内容上设置EventHandler:
scrollPane_Content.setContent(vBox_Content);
vBox_Content.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
double deltaY = event.getDeltaY()*6; // *6 to make the scrolling a bit faster
double width = scrollPane_Content.getContent().getBoundsInLocal().getWidth();
double vvalue = scrollPane_Content.getVvalue();
scrollPane_Content.setVvalue(vvalue + -deltaY/width); // deltaY/width to make the scrolling equally fast regardless of the actual width of the component
}
});
这样做可以直接使用滚动条,也可以使用鼠标滚轮向上和向下滚动。
希望这有助于其他正在寻求加快滚动滚动的人。
答案 1 :(得分:0)
在ScrollPane中更快地垂直滚动:
python2 and
答案 2 :(得分:0)
这通过查看内容和滚动窗格之间的高度差异来修复滚动,以便滚动的数量相同。
//Fix scroll pane slow scrolling
scrollPane.getContent().setOnScroll(scrollEvent -> {
double deltaY = scrollEvent.getDeltaY();
double contentHeight = scrollPane.getContent().getBoundsInLocal().getHeight();
double scrollPaneHeight = scrollPane.getHeight();
double diff = contentHeight - scrollPaneHeight;
if (diff < 1) diff = 1;
double vvalue = scrollPane.getVvalue();
scrollPane.setVvalue(vvalue + -deltaY/diff);
});
将差值设置为最小值 1 以防止被零除。
答案 3 :(得分:-1)
您可以使用:
scrollPane.getVerticalScrollBar().setUnitIncrement(20);
答案 4 :(得分:-1)
在外部样式表中,您可以
.scroll-pane .scroll-bar:vertical {
-fx-unit-increment: 10 ;
-fx-block-increment: 50 ;
}
.scroll-pane .scroll-bar:horizontal {
-fx-unit-increment: 5 ;
-fx-block-increment: 20 ;
}
例如,。如果您希望它仅应用于单个滚动窗格,请为滚动窗格指定id等。