如何使用绑定自动更改JavaFX TextField中的文本?

时间:2014-05-18 23:27:23

标签: java data-binding javafx javafx-8

我试过这句话:

movieTextField.textProperty().bindBidirectional(new SimpleStringProperty(YIFY.getPeliculaBuscada(), "peliculaBuscada"));

成为movieTextField JavaFX TextFieldYIFY.getPeliculaBuscada()返回String

在通话时,getPeliculaBuscada有一个初始化的字符串,但TextField没有显示任何内容。

我怎样才能完成它?

1 个答案:

答案 0 :(得分:1)

带有两个参数的SimpleStringProperty构造函数(请参阅Javadocs)获取属性所有者的对象以及属性的名称。这些参数都不是参数的初始值,默认情况下为null

要创建具有所需值的StringProperty,您可以执行

movieTextField.textProperty().bindBidirectional(new SimpleStringProperty(YIFY.getPeliculaBuscada()));

然而,这并不是真的会做任何事情,其他的是在文本字段中初始化文本:它在功能上等同于

movieTextField.setText(YIFY.getPeliculaBuscada());

原因是文本字段中的文本绑定到您不再具有引用的StringProperty。因为您没有引用StringProperty,所以没有其他方法可以更改它,因此文本中没有任何关系可以绑定它。另一方面,如果文本字段中的文本发生更改,则StringProperty将更新;但由于你没有提及它,你无法观察到这种变化。

您可能正在寻找的是让YIFY是一个实例的类使用StringProperty并通过StringProperty peliculaBuscadaProperty()方法公开它。那你就做movieTextField.textProperty().bind(YIFY.peliculaBuscadaProperty());