web-dev-qa-db-ja.com

JavaFX Sliderを個別のステップで移動させる方法は?

GUIを使用してJavaFxを作成しています。integersのみを選択できるようにするスライダーが必要です。

snapToTicksを使用できることはわかっていますが、"knob"をプルしている間も、non-integer値を表すことができます。それを取り除きたいのですが。リンクされている他のコンポーネントをめちゃくちゃにします。

基本的には、Swing's JSliderのようなものが必要ですが、JavaFxが必要です。出来ますか?探していましたが何も見つかりません。

13
Mr Redstoner

valuePropertySlider にリスナーを追加するだけで、新しいNumber値の integer value を設定できます。

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

または、 Math.round を使用して整数の丸めを使用できます。

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

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

4
Arthur Vaïsse