[英]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.