2016-07-31 35 views
8

JavaFx kullanarak GUI yapıyorum ve hiç seçilmem için yalnızca integers izin veren sürgülere ihtiyacım var.JavaFX Slider tamsayı yalnızca

ben snapToTicks kullanabilirsiniz biliyorum ama "knob" çekerken, hala non-integer değeri temsil edebilir. Bundan kurtulmak isterim. Bağlantılı diğer bileşenleri karıştırıyor.

Temel olarak Swing's JSlider gibi bir şey istiyorum, ancak JavaFx ile. Mümkün mü? Araıyorum ama hiçbir şey bulamıyorum.

cevap

8

Sadece Slider ait valueProperty için bir dinleyici ekleyebilir ve ardından yeni Number değerin integer value ayarlayabilirsiniz ya:

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

veya alternatif olarak Math.round kullanarak yuvarlama tamsayı kullanabilirsiniz:

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

Bu oldukça iyi bir fikir, sadece yuvarlama işlemini beğenmedim (çünkü nedense SkyWalker hakkındaki yorumumu görün). Yine de kullanabilirim. –

+0

Ayrıca, ((int) Math.round (newVal.doubleValue())) 'gibi tamsayı yuvarlamasını da kullanabilirsiniz. Her iki yaklaşım sadece tamsayı değerleri arasında "düğme" ye izin vermez. – DVarga

+0

, daha iyi bir şekilde geliyor, yine de daha meşru bir yol olup olmadığını bilmek isterim. –