我希望有以下滑块,用户只能选择预定义的一组值(64,128,256,... 2048),我还希望能够为此刻度设置标签。像这样:
[--*---------*------------------O--------------]
64 128 256
这种非连续滑块是否有内置解决方案或组件?
答案 0 :(得分:2)
这是针对JavaFX-8(由于问题而不适用于JFX-2,请在下面观看评论):
@Override
public void start(Stage stage) throws Exception {
Slider s = new Slider();
s.setLabelFormatter(new StringConverter<Double>() {
@Override
public String toString(Double t) {
return String.valueOf(Math.round(Math.pow(2, t)));
}
@Override
public Double fromString(String string) {
return Double.parseDouble(string);
}
});
s.setMin(0);
s.setMax(10);
s.setMajorTickUnit(1);
s.setMinorTickCount(0);
s.setSnapToTicks(true);
s.setShowTickLabels(true);
s.setShowTickMarks(true);
stage.setScene(new Scene(s));
stage.show();
}
但根据问题:https://javafx-jira.kenai.com/browse/RT-18448解决方案直到8.0版本构建才能应用。
麻烦的是,似乎没有办法使用左侧属性的操作来解决问题。因为所有左侧属性都可以通过线性值更改来操纵滑块。通过LabelFormatter达到对数值变化,这是一个技巧。