gpt4 book ai didi

JavaFX:适配器、ObjectProperty 和双向绑定(bind)

转载 作者:行者123 更新时间:2023-12-02 03:08:00 25 4
gpt4 key购买 nike

我想了解 ObjectProperty 的工作原理,但仍然没有成功。我有以下 POJO:

public class Article{

private LocalDateTime dateTime;

private final PropertyChangeSupport propertyChangeSupport;

public Article(String title) {
this.propertyChangeSupport = new PropertyChangeSupport(this);
}

public LocalDateTime getDateTime() {
return dateTime;
}

public void setDateTime(LocalDateTime dateTime) {
LocalDateTime pv = this.dateTime;
this.dateTime = dateTime;
propertyChangeSupport.firePropertyChange("dateTime", pv, this.dateTime);
}

public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}

public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
}

现在,我为 dateTime 字段创建 objectProperty:

ObjectProperty<LocalDateTime> dateTimeProperty=new JavaBeanObjectPropertyBuilder().bean(article).name("dateTime").build();

现在我想将此 dateTimeProperty 绑定(bind)到 textField.textProperty()。我不知道该怎么做:如何格式化数据以在文本字段中显示日期时间?当我在文本字段中输入新的日期时间时,如何创建 LocalDateTime 的实例?我们确实有双向绑定(bind)。请解释一下。

最佳答案

为什么不将您的 Bean 创建为 JavaFX Bean

public class Article {
private ObjectProperty<LocalDateTime> dateTime = new SimpleObjectProperty<>();
public final ObjectProperty<LocalDateTime> dateTimeProperty() {
return dateTime;
}
public void setDateTime(LocalDateTime ldt) {
dateTime.set(ldt);
}
public LocalDateTime getDateTime() {
return dateTime.get();
}
}

然后在您的控件中使用格式化程序绑定(bind)到文本控件

myTextField.textProperty().bindBidirectional(article.dateTimeProperty(), new LocalDateTimeStringConverter());

关于JavaFX:适配器、ObjectProperty 和双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41469842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com