gpt4 book ai didi

java - SetCellValueFactory 为 JavaFX TableColumn 中的数据对象

转载 作者:行者123 更新时间:2023-12-01 14:08:44 24 4
gpt4 key购买 nike

我有一个带有自定义单元格渲染的表列,此单元格渲染采用一个对象并将其属性渲染为标签。问题是我找不到将数组列表中的相同对象传递到列的方法。这是我的代码:

  //I want to render this object in a column as well as use it in the rest of columns
CustomerCreationFlow cflow=new CustomerCreationFlow();
cflow.setId(10L);
cflow.setFirstName("Feras");
cflow.setLastName("Odeh");
cflow.setCustomerType("type");
ObservableList<CustomerCreationFlow> data = FXCollections.observableArrayList(cflow);
idclm.setCellValueFactory(new PropertyValueFactory<CustomerCreationFlow, String>("id"));
//I tried this but it didn't work
flowclm.setCellValueFactory(new PropertyValueFactory<CustomerCreationFlow, CustomerCreationFlow>("this"));
typeclm.setCellValueFactory(new PropertyValueFactory<CustomerCreationFlow, String>("customerType"));
flowTable.setItems(data);

有什么建议吗?

最佳答案

您应该通过扩展 TableCell 来实现自定义 CellFactory。在你的自定义TableCell中,你可以通过获取当前TableCell的TableRow来获取表格的行的值(逻辑上为CustomerCreationFlow)。

这给出了:

class MyTableCell<S,T> extends TableCell<S, T>

@Override
public void updateItem(final T item, final boolean empty) {
super.updateItem(item, empty);
if (empty) {
this.setText(null);
this.setGraphic(null);
} else {
S item = (S) this.getTableRow().getItem();
// DO STUFF HERE
}
}
}

T是CellValueFactory定义的数据类型。 S是代表一行的数据类型。

关于java - SetCellValueFactory 为 JavaFX TableColumn 中的数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18700445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com