Data binding JavaFX8的简单绑定

Data binding JavaFX8的简单绑定,data-binding,javafx-8,observablelist,Data Binding,Javafx 8,Observablelist,几天来我一直在探索JavaFX8,并试图用绑定的概念来教育自己。我创造了一个这样的观察者 private static ObservableList<XYChart.Series<String, Number>> chartData = FXCollections.<XYChart.Series<String, Number>>observableArrayList(); areachart.dataProperty().bind(chartDa

几天来我一直在探索JavaFX8,并试图用绑定的概念来教育自己。我创造了一个这样的观察者

private static ObservableList<XYChart.Series<String, Number>> chartData = FXCollections.<XYChart.Series<String, Number>>observableArrayList();
areachart.dataProperty().bind(chartData);
我的理解是,绑定允许我通过将数据属性与列表关联来删除这一步骤。如果列表更改,图表数据属性将自动“更新”

我尝试过像这样绑定数据属性

private static ObservableList<XYChart.Series<String, Number>> chartData = FXCollections.<XYChart.Series<String, Number>>observableArrayList();
areachart.dataProperty().bind(chartData);
然而,它要求的语法我一点都不熟悉

(ObservableValue<? extends ObservableList<Series<String, Number>>> arg0)

(ObservalEvalueJavaFX的
ObservalElist
是一个特殊列表,可以通过附加事件处理程序来观察其子操作。有关更多信息,请阅读相关的javadocs

在JavaFX中,所有图表的祖先,
XYChart
有一个
dataProperty()
,它是
ObjectProperty
。也就是说,这是一个属性字段,用于保存类型为ObservableList的对象。您需要将其保存的可观察列表直接设置为

areachart.setData(chartData);
现在areachart和chartData的数据引用了相同的列表,任何对chartData的删除/添加都将“反映”到areachart的数据,反之亦然

也是有效的,但它会将列表复制到列表。也就是说,它会在内部循环chartData并将其子项(本例中为XYChart.Series)复制到areachart的数据可观察列表中。结果是不同的列表,因此它们之间没有关系,也没有“反射”

是错误的。因为它正试图将
属性
绑定到
列表

即使dataProperty是
ObjectProperty
,通过dataProperty()绑定到它。bind()将期望
observeValue
areachart.dataProperty().bind(chartData);