1
考慮以下情況:javafx雙向更改通知不起作用?
我一個TextField
的字符串屬性綁定到一個浮動屬性:
TextField txtField;
SimpleFloatProperty floatprop;
void bind(){
txtField.textProperty().bindBidiretional(floatprop, NumberFormat.getInstance);
}
此外,我要檢查的值是否是積極的,我想重置值如有必要:
floatprop.addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> ov, Number t, Number t1) {
SimpleFloatProperty prop = (SimpleFloatProperty)ov;
if(t.floatValue() <= 0)
prop.set(t1.floatValue());
else
prop.set(t.floatValue());
}
});
這是行不通的。無論我在文本框中輸入什麼內容,該值都不會被檢查,即負值不會被重置。
編輯:有點距離,我也明白了爲什麼。在設置prop
時,更改的事件將觸發一個方便的無限遞歸。我該如何解決這個問題?
你能提供一個SSCCE嗎? – Puce
嗯,我發現,它爲什麼不起作用。我現在想知道如何使它工作:D。詳情請參閱我的編輯。 –