如何在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。通常(尽管在本例中不是这样)有两个值可以更改以实现您想要的:可以将
文件
对象更改为具有指定名称的新文件
,或者可以更改当前文件
对象的名称。