I just tried to bind a Integer and a String property. After some googling this should be possible with one of the two provided methods:
public static void bindBidirectional(Property stringProperty,
Property otherProperty, StringConverter converter)
public static void bindBidirectional(Property stringProperty,
Property otherProperty, java.text.Format format)
Unluckily this does not seem to work for me. What am I doing wrong?
import java.text.Format;
import javafx.beans.binding.Bindings;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.util.converter.IntegerStringConverter;
public class BiderectionalBinding {
public static void main(String[] args) {
SimpleIntegerProperty intProp = new SimpleIntegerProperty();
SimpleStringProperty textProp = new SimpleStringProperty();
Bindings.bindBidirectional(textProp, intProp, new IntegerStringConverter());
intProp.set(2);
System.out.println(textProp);
textProp.set("8");
System.out.println(intProp);
}
}
Simple matter of type confusion
Bindings.bindBidirectional(textProp, intProp, new IntegerStringConverter());
Should be:
Bindings.bindBidirectional(textProp, intProp, new NumberStringConverter());
I tried your code in Eclipse and had to cast the converter. Then everything looks ok:
public class BiderectionalBinding {
public static void main(String[] args) {
SimpleIntegerProperty intProp = new SimpleIntegerProperty();
SimpleStringProperty textProp = new SimpleStringProperty();
StringConverter<? extends Number> converter = new IntegerStringConverter();
Bindings.bindBidirectional(textProp, intProp, (StringConverter<Number>)converter);
intProp.set(2);
System.out.println(textProp);
textProp.set("8");
System.out.println(intProp);
}
}
The output is:
StringProperty [value: 2]
IntegerProperty [value: 8]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With