Wie deaktiviert man nur Abwärts Scrollen in ScrollPane
, wenn es eine bestimmte Vvalue
erreicht?Wie Scrollen in ScrollPane in JavaFX deaktivieren Scrollen?
Antwort
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).
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();
}
}
}
});
Danke, die andere Möglichkeit ist was ich brauche. Und danke auch für den Hinweis. – Curious