如何从javaFX中的String []列表中填充TableView?

时间:2015-01-31 19:54:06

标签: java javafx javafx-2

我正在尝试使用列表中的字符串数组动态填充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);

1 个答案:

答案 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]);
        }
    });
}