Java 如何转换ObjectProperty<;日期>;反对不动产<;LocalDate>;
我要装订Java 如何转换ObjectProperty<;日期>;反对不动产<;LocalDate>;,java,javafx,javafx-8,Java,Javafx,Javafx 8,我要装订 dp_date_add.valueProperty().binddiregical(model.forDateProperty()) 其中forDateProperty()是: public ObjectProperty<Date> forDateProperty() { if(forDate == null){ forDate = new SimpleObjectProperty<>(); }
dp_date_add.valueProperty().binddiregical(model.forDateProperty())代码>
其中forDateProperty()
是:
public ObjectProperty<Date> forDateProperty() {
if(forDate == null){
forDate = new SimpleObjectProperty<>();
}
return forDate;
}
但它不起作用,因为它转换为LocalDate,而不是属性LocalDate。如果可以的话,解决这个问题的简单方法是更改模型,使其使用对象属性。假设不能这样做,则需要使用两个侦听器:
dp_date_add.valueProperty().addListener((obs, oldDate, newDate) ->
model.forDateProperty().set(Date.from(newDate.atStartOfDay(ZoneId.systemDefault()).toInstant())));
model.forDateProperty().addListener((obs, oldDate, newDate) ->
dp_date_add.setValue(model.forDateProperty().get().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));
dp_date_add.valueProperty().addListener((obs, oldDate, newDate) ->
model.forDateProperty().set(Date.from(newDate.atStartOfDay(ZoneId.systemDefault()).toInstant())));
model.forDateProperty().addListener((obs, oldDate, newDate) ->
dp_date_add.setValue(model.forDateProperty().get().toInstant().atZone(ZoneId.systemDefault()).toLocalDate()));