Abend,
ich möchte im Prinzip einen ScrollListener bauen, der je nachdem, ob man nach oben oder unten scrollt, ein Event auslöst.
Als erstes hatte ich den ScrollPane.setOnScroll() verwendet, allerdings hat der erst eingesetzt, wenn man ganz ans untere/obere Ende gescrollt hat.
Deshalb verwende ich nun die vvalueProperty()...
Hier habe ich nun festgestellt, dass oldVal und newVal immer genau dieselben werte haben.
in der ersten if-clause frage ich lediglich die Differenz zwischen 2 Elementen ab (was auch einwandfrei funktioniert).
In der zweiten if-clause wollte ich ursprünglich folgendes verwenden:
Da oldVal und newVal allerdings immer den selben Wert haben, wird sich diese Bedingung nie erfüllen.
Also habe ich außerhalb ein double erstellt (previous), der den Wert vom vorherigen Event "speichern" soll (um in der zweiten if wieder verglichen werden zu können).
Hier habe ich nun das Problem, dass der Wert Final sein muss, ihm dann aber kein neuer Wert mehr zugewiesen werden kann.
Nun die Fragen:
1. Warum sind die beiden Werte (old und new) identisch?
2. gibt es ein workaround für mein Problem? (das allmächtige google konnte mir bisher nicht helfen, bzw. war ich nicht in der Lage es richtig zu nutzen )
Gruß
mirisbowring
ich möchte im Prinzip einen ScrollListener bauen, der je nachdem, ob man nach oben oder unten scrollt, ein Event auslöst.
Als erstes hatte ich den ScrollPane.setOnScroll() verwendet, allerdings hat der erst eingesetzt, wenn man ganz ans untere/obere Ende gescrollt hat.
Deshalb verwende ich nun die vvalueProperty()...
Java:
final double previous=1.0;
scrollPane.vvalueProperty().addListener((o,oldVal,newVal)->{
if((contentContainer.getHeight()-Main.getStage().getHeight())>110){
if(oldVal.doubleValue()>previous){
//doSomething
}else{
//doSomething
}
}
System.out.println(oldVal.doubleValue());
System.out.println(newVal.doubleValue());
previous = oldVal.doubleValue();
});
in der ersten if-clause frage ich lediglich die Differenz zwischen 2 Elementen ab (was auch einwandfrei funktioniert).
In der zweiten if-clause wollte ich ursprünglich folgendes verwenden:
Java:
if(oldVal < newVal)
Also habe ich außerhalb ein double erstellt (previous), der den Wert vom vorherigen Event "speichern" soll (um in der zweiten if wieder verglichen werden zu können).
Hier habe ich nun das Problem, dass der Wert Final sein muss, ihm dann aber kein neuer Wert mehr zugewiesen werden kann.
Nun die Fragen:
1. Warum sind die beiden Werte (old und new) identisch?
2. gibt es ein workaround für mein Problem? (das allmächtige google konnte mir bisher nicht helfen, bzw. war ich nicht in der Lage es richtig zu nutzen )
Gruß
mirisbowring