当ScrollPane
达到特定Vvalue
时,如何仅停用向下滚动?
答案 0 :(得分:2)
您可以设置ScrollPane
的{{3}}。
此ScrollPane允许的最大vvalue。默认值为1.
通过设置此属性,ScrollPane
的滚动条会重新调整,因此滚动条的最底部位置实际上是指定值。
这将只允许滚动40%的垂直空间:
scrollPane.setVmax(0.4);
另一种可能性是通过聆听ScrollPane
的{{3}}属性来打断向下滚动。
使用这种方法,ScrollPane
的滚动条会在定义的值上停止,因此最底部的位置仍然是100%。
final double maxDownScroll = 0.4;
scrollPane.vvalueProperty().addListener((obs, oldVal, newVal) -> {
if ((double) newVal > maxDownScroll)
scrollPane.setVvalue(maxDownScroll);
});
注意:这两种方法都比向ScrollEvent
的{{1}}添加过滤器更通用,因为它们可以在移动滚动条的情况下工作,也可以在滚动的情况下使用使用鼠标(ScrollPane
仅在使用鼠标滚轮,平头钉或类似设备时才会被触发)。
答案 1 :(得分:1)
好的,我解决了。代码:
scrollPane.addEventFilter(ScrollEvent.SCROLL, new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
//"0.4 is my the specific value"
if(scrollPane.getVvalue() > 0.4) {
if (event.getDeltaY() < 0) {
event.consume();
}
}
}
});