从tableview javafx中显示可观察列表的数据



我有这个代码

ObservableList data = FXCollections.observableArrayList();
data.addAll(itemNumber, "Not Verified", "");
mItemNoColumn.setCellValueFactory (value -> SimpleObjectProperty<>(data.get(0)));
mStatusColumn.setCellValueFactory (value -> SimpleObjectProperty<>(data.get(1)));
mTableView.getItems().add(data);

假设所有变量已经声明并初始化。

该代码在表观视图中给出的输出仅在于它仅获得observablist的最后一个值,而不是所需的所有数据。

但是,当我在控制台中打印可观察的列表时,所有所需的数据都正确打印。

表格中的预期输出应为可观察列表中的所有项目

TableColumn中的每个单元格使用了单元格工厂。这意味着,当您在不经意间将每个单元格(即每行(绑在一个data对象的工厂中明确使用data(仅是表的一行(时。传递给工厂的CellDataFeatures对象使您可以访问该行的项目,以尝试获取该值。您的代码应该更像:

mItemNoColumn.setCellValueFactory(features -> Bindings.valueAt(features.getValue(), 0));
mStatusColumn.setCellValueFactory(features -> Bindings.valueAt(features.getValue(), 1));

我使用了Bindings.valueAt(ObservableList,int),因为如果您在ObservableList的该索引上更改值,它将更新。但是,如果您不需要,则可以继续将值包装在ObjectProperty中。

您不提供太多的上下文,因此我不能确定该代码在哪里,但请记住,您只需要设置cellValueFactory 一次

最新更新