2016-07-23 478 views

回答

2

您可以设置ScrollPanevmaxProperty

该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仅触发时更通用使用鼠标滚轮,大头钉或类似装置)。

+0

谢谢,其他的可能性是我需要的。并且还要感谢你的提示。 – Curious

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