如何在 JavaFX 中将 StringProperty 绑定到 ObjectProperty<Integer>?



我只找到了解决方案如何将StringProperty绑定到IntegerProperty,类似的东西:

StringProperty.bindBidirectional(IntegerProperty, new NumberStringConverter());

,但我还需要null值。如何绑定StringProperty to ObjectProperty<Integer>

默认IntegerStringConverter了解nulls:

ObjectProperty<Integer> objP = new SimpleObjectProperty<>();
stringProp.bindBidirectional(objP, new IntegerStringConverter());
objP.setValue(null); // stringProp == ""
stringProp.setValue(""); // objP == null

如果您想要不同的行为,则可以制作自己的转换器:

    ObjectProperty<Integer> objP = new SimpleObjectProperty<>();
    stringProperty.bindBidirectional(objP, new StringConverter<Integer>() {
        @Override
        public String toString(Integer number) {
            return number == null ? "NULL" : number.toString();
        }
        @Override
        public Integer fromString(String string) {
            return string.equals("NULL") ? null : Integer.valueOf(string); 
        }
    });
    // both works:
    objP.setValue(null);
    objP.setValue(100);

相关内容

最新更新