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

时间:2016-07-23 10:18:03

标签: java javafx scroll scrollpane

ScrollPane达到特定Vvalue时,如何仅停用向下滚动?

2 个答案:

答案 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();
                        }
                    }
             }
       });