Я пытаюсь реализовать Slider таким образом, чтобы пользователь мог перетаскивать только заданные приращения.Я пытался по-разному, используя Slider API, но не получил желаемых результатов.Ниже приведена краткая демонстрация того, что я пробовал.Я ожидаю перетаскивать большой палец только с шагом 10, а не с промежуточными значениями.snapToTicks делает то, что мне нужно, но только после окончания перетаскивания.Я пытаюсь не двигать большим пальцем, пока не будет достигнут следующий желаемый прирост блока.
Может кто-нибудь дать мне знать, как мне этого добиться.Ниже приведен скриншот при перетаскивании.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Slider;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class SliderDemo extends Application {
public static void main(String... args){
Application.launch(args);
}
@Override
public void start(Stage stage) throws Exception {
Label label = new Label();
label.setStyle("-fx-font-size:30px");
Slider slider = new Slider(5,240,5);
slider.setBlockIncrement(10);
slider.setMajorTickUnit(10);
slider.setMinorTickCount(0);
slider.setShowTickLabels(true);
slider.setShowTickMarks(true);
slider.setSnapToTicks(true);
slider.valueProperty().addListener((obs,old,val)->label.setText((int)Math.round(val.doubleValue())+""));
VBox root = new VBox(slider,label);
root.setAlignment(Pos.CENTER);
root.setPadding(new Insets(20));
root.setSpacing(20);
Scene scene = new Scene(root,600,200);
stage.setScene(scene);
stage.show();
}
}