我有一個滑塊,我需要它來修復int數字1-23。因此,如果用戶將它從1移開,那麼它將以1-23的任何數字結束,這與雙值不同。這個滑塊的目的是成爲一個時鐘,你拖動它並出現不同的時間。如何設置滑塊來固定位置?
我第一次嘗試:
private final int MIN_CHANGE = 1;
....
timeSlider.setMax(23);
....
timeSlider.valueProperty().addListener((obs, oldValue, newValue) -> {
if (!timeSlider.isValueChanging()) {
if (Math.abs(newValue.intValue()) > MIN_CHANGE) {
timeSlider.setValue(newValue.intValue());
}
}
});
這或多或少的作品,但僅適用於點擊,而不是拖着。
如果getValue是雙精度型,拖動時我怎麼能得到一個滑塊來修正像1-23這樣的整數?
我面對的另一個問題是拖動下午/上午改變不是突然的。
timeSlider.valueChangingProperty().addListener((obs, wasChanging, isChanging) -> {
if (isChanging) {
if(timeSlider.getValue() < 12.99) {
labelTest.textProperty().bind(Bindings.format("%.0f:00am", timeSlider.valueProperty()));
} else {
labelTest.textProperty().bind(Bindings.format("%.0f:00pm", timeSlider.valueProperty()));
}
}
});
我想你正在尋找[Slider#blockIncrementProperty()](https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/Slider.html#blockIncrementProperty) – ItachiUchiha
@IchichiUchiha正是我在找什麼對於!謝謝。 am/pm更新怎麼樣?如何在拖動時更新它,而不僅僅是點擊?現在我可以從頭到尾拖動,上午/下午不會改變,除非我點擊13以後的任何值。 –
*上午/下午不會改變,除非我點擊13 *之後的任何值。我不明白這一點。你能解釋一下你到底發生了什麼嗎? – ItachiUchiha