繁体   English   中英

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

[英]How to bind StringProperty to ObjectProperty<Integer> in JavaFX?

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM