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

时间:2017-09-09 15:55:39

标签: java javafx data-binding

我发现只有解决方法如何将StringProperty绑定到IntegerProperty,如下所示:

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

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

1 个答案:

答案 0 :(得分:3)

默认IntegerStringConverter了解空值:

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);