如何使JavaFX滑块以离散的步骤移动?

2022-09-03 04:49:37

我正在使用,我需要只允许被选中的滑块。GUIJavaFxintegers

我知道我可以使用,但是在拉动时,它仍然可以表示一个值。我想摆脱它。它搞砸了链接到它的其他组件。snapToTicks"knob"non-integer

基本上,我想要类似的东西,但与.可能吗?我一直在寻找,但我找不到任何东西。Swing's JSliderJavaFx


答案 1

您只需将侦听器添加到 的 ValueProperty 中,然后就可以设置新值的整数值SliderNumber

slider.valueProperty().addListener((obs, oldval, newVal) -> 
    slider.setValue(newVal.intValue()));

或者,您也可以使用 Math.round 使用整数舍入:

slider.valueProperty().addListener((obs, oldval, newVal) ->
    slider.setValue(Math.round(newVal.doubleValue())));

答案 2

在FXML中:

<Slider fx:id="availableReproSelector" 
        blockIncrement="1.0" 
        cache="true" 
        majorTickUnit="1.0" 
        max="4.0" 
        min="1.0" 
        minorTickCount="0" 
        showTickLabels="true" 
        showTickMarks="true" 
        snapToTicks="true" 
        value="1.0" 
        />

或者在Java中:

Slider slider = new Slider(1, 4, 1);
slider.setBlockIncrement(1);
slider.setMajorTickUnit(1);
slider.setMinorTickCount(0);
slider.setShowTickLabels(true);
slider.setSnapToTicks(true);

这里的关键是捕捉到分时选项,并结合适当的逐笔报价单位组合。此设置会产生以下滑块,该滑块只能用于选择范围从 1 到 4 的值:

can only select int values ranging from 1 to 4