繁体   English   中英

在TableView JavaFX中显示可观察列表中的数据

[英]Display data from observable list in 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);

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

该代码在tableview中给出的输出是,它仅获取ObservableList的最后一个值,而不是所需的所有数据。

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

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

单元格值工厂用于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 即可

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM