我使用GUI
制作JavaFx
,我需要只允许选择integers
的滑块。
我知道我可以使用snapToTicks
,但在提取"knob"
时,它仍然可以代表non-integer
值。我想摆脱它。它弄乱了与之相关的其他组件。
基本上,我需要Swing's JSlider
之类的东西,但需要JavaFx
。可能吗?我一直在搜索,但找不到任何东西。
答案 0 :(得分:13)
您只需向Slider
的{{3}}添加一个监听器,然后就可以设置新Number
值的valueProperty
:
slider.valueProperty().addListener((obs, oldval, newVal) ->
slider.setValue(newVal.intValue()));
或者您可以使用integer value使用整数舍入:
slider.valueProperty().addListener((obs, oldval, newVal) ->
slider.setValue(Math.round(newVal.doubleValue())));
答案 1 :(得分: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范围内的值: