Search code examples
javafxslidermouseevent

How to set a slider change listener to fire only when mouse drag is released in JavaFX?


I have a working code in JavaFX for sliders, but it fires everytime there is any change in the slider and I want it to only fire a change when the mouse drag event is released.

Below is the code:

sliderMarkerSize.valueProperty().addListener(new ChangeListener<Number>() {
        public void changed(ObservableValue<? extends Number> ov,
            Number old_val, Number new_val) {
                markerSize = new_val.intValue();
                communalWeb();
            }

    });

How to make it only change my graph when mouse is released?


Solution

  • Use OnMouseReleased.

    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Slider;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
    
    /**
     *
     * @author blj0011
     */
    public class JavaFXApplication231 extends Application
    {
    
        @Override
        public void start(Stage primaryStage)
        {
    
    
            Slider slider = new Slider(0, 100, 0);
            slider.setOnMouseReleased(event -> {
                System.out.println(slider.getValue());
            });
            StackPane root = new StackPane(slider);
    
            Scene scene = new Scene(root, 300, 250);
    
            primaryStage.setTitle("Hello World!");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args)
        {
            launch(args);
        }
    
    }