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());
}
答案 0 :(得分:1)
JavaFX可能被视为UI框架,但单独使用JavaFX应用程序不会使用JavaFX Properties。
您不必使用JavaFX应用程序线程来使用JavaFX属性。
所以,是的,这是一个好主意。
我建议你仔细阅读这些帖子:
JavaFX属性的设计使您无需运行JavaFX程序即可使用它们