【问题标题】:How to disable down scrolling in ScrollPane in JavaFX?如何在 JavaFX 的 ScrollPane 中禁用向下滚动?
【发布时间】:2016-07-23 10:18:03
【问题描述】:

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

【问题讨论】:

    标签: java javafx scroll scrollpane


    【解决方案1】:

    您可以设置vmaxPropertyScrollPane

    此 ScrollPane 允许的最大 vvalue。默认值为 1。

    通过设置这个属性,ScrollPane的滚动条被重新缩放,所以滚动条的最底部位置实际上是指定的值

    这将只允许滚动 40% 的垂直空间:

    scrollPane.setVmax(0.4);
    

    另一种可能性是通过监听ScrollPanevvalueProperty 属性来中断向下滚动。

    使用这种方法,ScrollPane 的滚动条会停在一个定义的值上,所以最底部的位置仍然是 100%

    final double maxDownScroll = 0.4;
    scrollPane.vvalueProperty().addListener((obs, oldVal, newVal) -> {
        if ((double) newVal > maxDownScroll)
            scrollPane.setVvalue(maxDownScroll);
    });
    

    注意:这两种方法都比在ScrollPaneScrollEvent 中添加过滤器更通用,因为它们在移动滚动条和使用鼠标滚动的情况下都有效( ScrollEvent 仅在使用鼠标滚轮、钉板或类似设备时触发)。

    【讨论】:

    • 谢谢,另一种可能性是我需要的。也感谢您的说明。
    【解决方案2】:

    好的,我解决了。代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 2014-11-26
      • 2016-11-30
      • 1970-01-01
      • 2016-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多