JavaFX 独自の Slider コントロールに LabelFormatter を設定することができます。これにより、TickLabels のテキストを自由に定義できます。残念ながら、これは ControlsFX の RangeSlider コントロールでは不可能のようです。
これが何らかの形でまだ可能かどうか、または手動で実装するにはどうすればよいか疑問に思っていましたか?
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);
}
}
}
}
});