ユーザーが事前定義された値のセット (64、128、256、... 2048) のみを選択できる次のスライダーが必要であり、この目盛りのラベルを設定できるようにしたいです。このようなもの:
[--*---------*------------------O--------------]
64 128 256
このような非連続スライダー用の組み込みソリューションまたはコンポーネントはありますか?
これは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 を介して行われますが、これはトリックです。
カスタマイズに関する機能もあります: https://javafx-jira.kenai.com/browse/RT-27863