Reputation:
I found only solution how to bind StringProperty to IntegerProperty, something like this:
StringProperty.bindBidirectional(IntegerProperty, new NumberStringConverter());
But I need also null
value. How to bind StringProperty to ObjectProperty<Integer>
?
Upvotes: 3
Views: 3102
Reputation: 34518
Default IntegerStringConverter
understand nulls:
ObjectProperty<Integer> objP = new SimpleObjectProperty<>();
stringProp.bindBidirectional(objP, new IntegerStringConverter());
objP.setValue(null); // stringProp == ""
stringProp.setValue(""); // objP == null
If you want different behaviour you can make your own converter:
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);
Upvotes: 3