您在这里有几个选择。
首先,可以在JPA / Hibernate实体中使用FX属性,尽管您必须谨慎一些。简而言之,您需要确保使用属性访问,以便ORM调用get /
set方法,而不是尝试直接设置字段。史蒂文•范•恩佩(Steven van
Impe)在他的博客上对此进行了讨论,我也在同一个主题上发表了博客。我在这里没有尝试过的一件事是映射集合并使用
ObservableLists:这可能很棘手,因为JPA实现使用的子接口
List。
您的另一个选择是使属性成为Java Bean的“绑定属性”,然后使用Java
Bean属性适配器:
import java.beans.PropertyChangeSupport ;public class Person(){ private int id; private String name; private final PropertyChangeSupport pcs = new PropertyChangeSupport(this); public void addPropertyChangeListener(PropertyChangeListener listener) { this.pcs.addPropertyChangeListener(listener); } public void removePropertyChangeListener(PropertyChangeListener listener) { this.pcs.removePropertyChangeListener(listener); } public int getId() { return this.id; } public void setId(int id) { int oldId = this.id ; this.id = id ; pcs.firePropertyChange("id", oldId, id); } public String getName() { return this.name; } public void setName(String name) { String oldName = this.name ; this.name = name ; pcs.firePropertyChange("name", oldName, name); }}那你可以做
Label nameLabel = new Label();Person person = new Person();nameLabel.textProperty().bind(JavaBeanStringPropertyBuilder.create() .bean(person) .name("name") // name of property to bind to .build());


