如何在 JavaFX 的 ScrollPane 中禁用向下滚动?

How to disable down scrolling in ScrollPane in JavaFX?

如何在达到特定 Vvalue 时仅在 ScrollPane 中禁用向下滚动?

可以设置ScrollPanevmaxProperty

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);
});

注意: 这两种方法比向 ScrollPaneScrollEvent 添加过滤器更通用,因为它们在移动滚动条和同样在使用鼠标滚动的情况下(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();
                        }
                    }
             }
       });