可以为JavaFX自己的Slider控件设置LabelFormatter,这使您可以自由定义TickLabels的文本。不幸的是,使用ControlsFX的RangeSlider控件似乎无法实现。
我想知道这是否仍然可以实现,还是可以手动实现?
最佳答案
已经在ControlsFX票证系统中发布了一种解决方法:https://bitbucket.org/controlsfx/controlsfx/issue/509/add-possibility-to-use-data-other-than
实现该解决方法如下所示,请确保实现自己的StringConverter:
StringConverter<Number> rangeSliderLabelFormatter; // Implement a regular StringConverter to convert the values as needed.
rangeSlider.skinProperty().addListener(new ChangeListener<Skin<?>>() {
@Override
public void changed(ObservableValue<? extends Skin<?>> observable, Skin<?> oldValue, Skin<?> newValue) {
if (newValue != null) {
if (newValue instanceof RangeSliderSkin) {
RangeSliderSkin rangeSliderSkin = (RangeSliderSkin) newValue;
if (rangeSliderSkin.getChildren().get(0) instanceof NumberAxis) {
NumberAxis containedNumberAxis = (NumberAxis) rangeSliderSkin.getChildren().get(0);
containedNumberAxis.setTickLabelFormatter(rangeSliderLabelFormatter);
}
}
}
}
});
关于java - 是否设置RangeSlider(ControlsFX)的TickLabel的文本,例如JavaFX的Slider的LabelFormatter?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28647973/