考虑以下情况:
我将 a 的字符串属性绑定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
时,将触发 changed-event 以进行方便的无限递归。我该如何解决这个问题?