如何在 JavaFX 的 ScrollPane 中禁用向下滚动?
How to disable down scrolling in ScrollPane in JavaFX?
如何在达到特定 Vvalue
时仅在 ScrollPane
中禁用向下滚动?
可以设置ScrollPane
的vmaxProperty。
The maximum allowable vvalue for this ScrollPane. Default value is 1.
通过设置这个属性,ScrollPane
的滚动条被重新缩放,所以滚动条的最底部位置实际上是指定的值。
这将只允许滚动垂直 space 的 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();
}
}
}
});
如何在达到特定 Vvalue
时仅在 ScrollPane
中禁用向下滚动?
可以设置ScrollPane
的vmaxProperty。
The maximum allowable vvalue for this ScrollPane. Default value is 1.
通过设置这个属性,ScrollPane
的滚动条被重新缩放,所以滚动条的最底部位置实际上是指定的值。
这将只允许滚动垂直 space 的 40%:
scrollPane.setVmax(0.4);
另一种可能性 是通过收听 ScrollPane
.
使用这种方法,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();
}
}
}
});