2016-07-31 30 views
8

Ich mache eine GUI mit JavaFx und ich brauche Schieberegler, die nur integers jemals ausgewählt werden können.JavaFX Slider Integer nur

Ich weiß, ich kann snapToTicks verwenden, aber beim Ziehen der "knob", kann es immer noch eine non-integer Wert darstellen. Ich möchte das gerne loswerden. Es vermasselt andere Komponenten, die damit verbunden sind.

Grundsätzlich möchte ich etwas wie Swing's JSlider, aber mit JavaFx. Ist es möglich? Ich habe gesucht, aber ich kann nichts finden.

Antwort

8

Sie können einfach einen Zuhörer auf die valueProperty des Slider hinzufügen und dann können Sie entweder die integer value des neuen Number Wert:

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

oder alternativ können Sie ganze Zahl verwenden Rundungs ​​Math.round mit:

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

, die eine ziemlich gute Idee ist, ich mag einfach nicht das Abrunden (zum Grund meines Kommentars auf SkyWalker sehen). Ich könnte es trotzdem benutzen. –

+0

Sie können Integer-Runden auch wie '((int) Math.round (newVal.doubleValue()))' verwenden. Beide Ansätze erlauben einfach nicht, den "Knopf" zwischen ganzzahligen Werten zu haben. – DVarga

+0

das klingt viel besser, obwohl ich immer noch gerne wissen würde, ob es einen legitimeren Weg gibt. –

Verwandte Themen