【发布时间】:2016-07-23 10:18:03
【问题描述】:
当ScrollPane 到达特定的Vvalue 时,如何仅禁用向下滚动?
【问题讨论】:
标签: java javafx scroll scrollpane
当ScrollPane 到达特定的Vvalue 时,如何仅禁用向下滚动?
【问题讨论】:
标签: java javafx scroll scrollpane
您可以设置vmaxProperty 的ScrollPane。
此 ScrollPane 允许的最大 vvalue。默认值为 1。
通过设置这个属性,ScrollPane的滚动条被重新缩放,所以滚动条的最底部位置实际上是指定的值。
这将只允许滚动 40% 的垂直空间:
scrollPane.setVmax(0.4);
另一种可能性是通过监听ScrollPane 的vvalueProperty 属性来中断向下滚动。
使用这种方法,ScrollPane 的滚动条会停在一个定义的值上,所以最底部的位置仍然是 100%。
final double maxDownScroll = 0.4;
scrollPane.vvalueProperty().addListener((obs, oldVal, newVal) -> {
if ((double) newVal > maxDownScroll)
scrollPane.setVvalue(maxDownScroll);
});
注意:这两种方法都比在ScrollPane 的ScrollEvent 中添加过滤器更通用,因为它们在移动滚动条和使用鼠标滚动的情况下都有效( ScrollEvent 仅在使用鼠标滚轮、钉板或类似设备时触发)。
【讨论】:
好的,我解决了。代码:
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();
}
}
}
});
【讨论】: