JavaFX TableView String [] column和String [] [] values

时间:2016-05-01 18:06:14

标签: java javafx tableview

我尝试将String []作为columnNames和String [] []作为数据添加到我的JavaFx表中。我确实创建了列(它们是可见的),但数据值是不行的...... 我没有收到任何例外,所以我有点困惑。我正在寻找任何其他方式向JavaFX添加项目,但它们是有限的,也无法正常工作。

我的代码是:

private void createScene(String[] columnNames, String[][] inputData) {

TableView table = new TableView();

table.setEditable(false);

for (int i = 0; i < columnNames.length; i++) {

    table.getColumns().add(new TableColumn(columnNames[i]));

}

List<List<String>> data = new ArrayList<List<String>>();

for (int i = 0; i < inputData.length; i++) {
    List<String> row = new ArrayList<String>();
    for (int j = 0; j < inputData[0].length; j++) {

        row.add(inputData[i][j]);

    }

    data.add(row);

}

ObservableList<ObservableList> inpData = FXCollections.observableArrayList();

for (List<String> dataList : data) {
    ObservableList<String> row = FXCollections.observableArrayList();
    for (String rowData : dataList) {
        row.add(rowData);
    }
    inpData.add(row); 
}

table.setItems(inpData); 

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().add(table);

Scene scene = new Scene(vbox, 500, 500);
jfxPanel.setScene(scene);

}

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

您需要向每个表列添加一个单元格值工厂,以便它知道要显示的数据。

强烈建议您通过向其提供类型参数来正确键入表格视图和表格列。

{{1}}