我只是试图绑定(bind)一个Integer和一个String属性。经过一番谷歌搜索,这应该可以通过提供的两种方法之一来实现:

  • public static void bindBidirectional(Property stringProperty,
    属性otherProperty,StringConverter转换器)
  • public static void bindBidirectional(Property stringProperty,
    属性otherProperty,java.text.Format格式)

  • 不幸的是,这似乎不适用于我。我究竟做错了什么?
    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);
        }
    }
    

    最佳答案

    简单的类型混淆问题

    Bindings.bindBidirectional(textProp, intProp, new IntegerStringConverter());
    

    应该:
    Bindings.bindBidirectional(textProp, intProp, new NumberStringConverter());
    

    07-25 23:31