如何在JavaFX中绑定ObjeTCs的子属性

如何在JavaFX中绑定ObjeTCs的子属性,java,binding,javafx,Java,Binding,Javafx,我知道下面的代码无法编译。但这正是我想要的: public ObjectProperty<File> myFile = new SimpleObjectProperty<File>(); Label fileName = new Label(); fileName.textProperty().bind(myFile.getValue().getName()); public ObjectProperty myFile=new SimpleObjectProper

我知道下面的代码无法编译。但这正是我想要的:

 public ObjectProperty<File> myFile = new SimpleObjectProperty<File>();
 Label fileName = new Label();
 fileName.textProperty().bind(myFile.getValue().getName());
public ObjectProperty myFile=new SimpleObjectProperty();
标签文件名=新标签();
fileName.textProperty().bind(myFile.getValue().getName());

能够绑定对象(如java.util.File)的属性,而无需将文件的每个属性声明为StringProperty。我该怎么做

在JavaFX8中,您可以使用API执行以下操作:

fileName.textProperty().bind(Bindings.selectString(myFile, "name"));

也可以考虑使用框架,使用

fileName.textProperty().bind(EasyBind.map(myFile, File::getName));

回答正确。但是反之亦然呢?将TextField textProperty绑定到POJO属性以在该POJO属性中存储输入?使用绑定无法做到这一点(如何设置POJO属性是不明确的)。您需要使用侦听器并手动更新属性。如果POJO遵循JavaBean样式,为什么会有歧义?属性正在获取setter,并且使用selectString的语法,这应该是可能的。其他EL使用相同的概念通过表达式绑定(例如JSF)绑定POJO。通常(尽管在本例中不是这样)有两个值可以更改以实现您想要的:可以将
文件
对象更改为具有指定名称的新
文件
,或者可以更改当前
文件
对象的名称。