Как заставить JavaFX Slider двигаться в дискретных шагах?
Я JavaFx
GUI
с использованием JavaFx
и мне нужны ползунки, которые позволяют выбирать только integers
.
Я знаю, что могу использовать snapToTicks
, но, потянув за "knob"
, он все равно может представлять non-integer
значение. Я хотел бы избавиться от этого. Это испортит другие компоненты, связанные с ним.
В принципе, я хочу что-то вроде Swing JSlider
, но с JavaFx
. Является ли это возможным? Я искал, но ничего не могу найти.
Ответы
Ответ 1
Вы можете просто добавить слушателя к valueProperty
Slider
а затем вы можете либо установить целочисленное значение нового значения Number
:
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
<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"
/>
Ключ здесь - опция привязки к тикам в сочетании с соответствующей комбинацией единиц тика. Эта настройка приводит к следующему слайдеру, который может использоваться только для выбора значений в диапазоне от 1 до 4: