2016-07-23 14 views

Antwort

2

Sie können die vmaxProperty der ScrollPane einstellen.

Der maximal zulässige Wert für diese ScrollPane. Der Standardwert ist 1.

Durch Festlegen dieser Eigenschaft die Scrollbar des ScrollPane neu skaliert wird, so dass die untersten Position der Scrollbar ist eigentlich der angegebene Wert.

Dies wird nur das 40% des vertikalen Raumes ermöglicht gescrollt werden:

scrollPane.setVmax(0.4); 

Eine andere Möglichkeit zu unterbrechen, ist nach unten scrollen, indem auf die vvalueProperty Eigenschaft der ScrollPane hören.

Mit diesem Ansatz wird die Bildlaufleiste der ScrollPane auf einen definierten Wert gestoppt, so die unterste Position ist immer noch 100%.

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

Hinweis: Beiden Ansätze sind allgemeinerer als ein Filter auf die ScrollEvent der ScrollPane Zugabe, da sie nur im Fall arbeiten feuert die Scrollbar bewegten und auch bei Scrollen mit der Maus (ScrollEvent wird, wenn das Mausrad, Tack Pad oder ähnliches Gerät wird verwendet).

+0

Danke, die andere Möglichkeit ist was ich brauche. Und danke auch für den Hinweis. – Curious

1

OK, ich habe es gelöst. Code:

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