如何在JavaFX中双向地将LocalDate绑定到TextField

时间:2016-05-25 20:32:02

标签: date binding javafx-8

我正在尝试将DTO上的ObjectProperty<LocalDate>绑定到TextField,但我无法将其发挥作用。

这就是我设置它的方式:

dateOfBirthTextField.setTextFormatter(new TextFormatter<>(new LocalDateEnhancedStringConverter()));

person.birthdayProperty().bindBidirectional(dateOfBirthTextField.textProperty(), new LocalDateEnhancedStringConverter());

但是这给了我以下编译错误:

  

ObjectProperty类型中的方法bindBidirectional(Property)不适用于参数(StringProperty,LocalDateEnhancedStringConverter)

不太确定下一步该尝试什么?

2 个答案:

答案 0 :(得分:2)

根据JavaDoc:

  

public <T> void bindBidirectional(Property<T> other, StringConverter<T> converter)

     

在此StringProperty与另一个任意属性之间创建双向绑定。   参数:

     

other - 另一个属性

     

converter - 用于在 StringProperty 和其他属性之间进行转换的StringConverter

(大胆是我的)

所以你应该以相反的顺序进行绑定,将来自文本字段的StringProperty绑定到&#34;其他&#34;财产,生日财产:

dateOfBirthTextField.textProperty()
    .bindBidirectional(
        person.birthdayProperty(), 
        new LocalDateEnhancedStringConverter());

答案 1 :(得分:0)

我建议改用DatePicker。然后,您可以绑定value property