我正在尝试使用列表中的字符串数组动态填充TableView(我猜有更好的方法来处理信息,但它是我给予的...),所以我创建一个tableView,创建所有列和内容,但是在填充tableview时我就迷失了。
列表中包含所有字符串数组,一切似乎都有效,任何数组都没有错位数据或类似的东西,当我运行项目时,列名称显示为我想要的,并且在我的列表中的每个数组的tableview上的一行,但我无法让它显示信息。
我想我错过了将列表中的信息设置到单元格中的语句,但我看不到这样做的方法。任何帮助将在cookie中的重量感谢:0
以下是目前使用的流程代码。
int tam = regs.length-3;
String[] aux = new String[regs.length-3];
ObservableList<String[]> list = FXCollections.observableArrayList();
for (int i = 0; i < db.length; i++) {
aux[(i % tam)] = db[i];
if (((i % tam) == tam-1) & (i > 0)) {
list.add(aux);
aux = new String[tam];
}
}
TableView<String[]> table = new TableView<>();
TableColumn[] tableColumns = new TableColumn[tam];
for (int i = 3; i < regs.length; i++) {
tableColumns[i-3] = new TableColumn(regs[i]);
}
table.getColumns().addAll(tableColumns);
table.setItems(list);
答案 0 :(得分:1)
您需要在表列上设置单元格值工厂。像
这样的东西TableColumn[] tableColumns = new TableColumn[tam];
for (int i = 3; i < regs.length; i++) {
tableColumns[i-3] = new TableColumn(regs[i]);
final int index = i - 3 ; // I think, don't really understand what you're doing with indexes...
tableColumns[i-3].setCellValueFactory(new Callback<CellDataFeatures<String[], String>>, ObservableValue<String>>) {
@Override
public ObservableValue<String> call(CellDataFeatures<String[], String> cellData) {
return new ReadOnlyStringWrapper(cellData.getValue()[index]);
}
});
}