2015-02-21 2 views
1

Можно установить LabelFormatter для собственного элемента управления Slider для JavaFX, это позволяет свободно определять текст TickLabels. К сожалению, это не представляется возможным с помощью элемента управления RangeSlider ControlsFX.Настройка текста TickLabels RangeSlider (ControlsFX), например, LabelFormatter из слайдера JavaFX?

Мне было интересно, возможно ли это по-прежнему или как это можно реализовать вручную?

ответ

1

Обходной была выдана в билетной системе 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); 
          } 
         } 
        } 
       } 
      }); 
+0

ссылаются, проблема в настоящее время объединены в поэтому вы можете использовать открытый API ControlsFX, а не этот обходной путь. –