I have this issue where the JavaFX Slider doesn't invoke the ChangeListener for the valueProperty when the slider-knob is on the min or max extreme. I want to execute some code only after the slider value has been changed (not while the slider is being dragged). I tried to achieve this with the following code:
Slider slider = new Slider();
slider.setMin(0);
slider.setMax(10);
slider.setMajorTickUnit(5);
slider.setMinorTickCount(5);
slider.setBlockIncrement(1);
slider.setSnapToTicks(true);
slider.setShowTickMarks(true);
slider.setShowTickLabels(true);
ChangeListener<? super Number> valueListener = (observable, oldValue, newValue) -> {
if (!slider.isValueChanging()) {
System.out.println("Value changed");
}
};
slider.valueProperty().addListener(valueListener);
You'll see that when you drag and release the slider the string Value changed
is printed out every time except for when the slider-knob is released on the 0 or 10 positions. Is this the expected behaviour? Or am I missing something?