JavaFX之外的ObservableValue

时间:2015-01-09 10:38:27

标签: java javafx

JavaFX是一个UI框架。不过,我想将JavaFX ObservableValue用于非UI(或者至少是这种方式)。这是一个好主意吗?!就个人而言,我不这么认为(UI-Thread,没有并发)。

在我的项目中,观察非UI相关对象(后端)的属性非常常见。我目前的解决方案是使用EventBus方法。它起作用,但是当涉及到UI时,它就像是一个黑客来进行数据绑定。

示例:

private void init () {
    myObject.subscribe(this);
    textfield.textProperty().addChangeListener( (o,l,n) -> {
        myObject.setText(n);
    });
}

@Handler
private void handleChangeEvent(final ChangeEvent event) {
    Platform.runLater(() -> this.textfield.setText(event.getValue()));
}

当ListView的选定项目检索到对象时,此示例变得非常复杂。

我想要的是什么:

private void init () {
    myObject.textProperty().bindBidirectional(textfield.textProperty());
}

1 个答案:

答案 0 :(得分:1)

JavaFX可能被视为UI框架,但单独使用JavaFX应用程序不会使用JavaFX Properties

您不必使用JavaFX应用程序线程来使用JavaFX属性。

所以,是的,这是一个好主意。

我建议你仔细阅读这些帖子:

JewelSea说出他的answer

  

JavaFX属性的设计使您无需运行JavaFX程序即可使用它们