gpt4 book ai didi

JavaFX TableView String[] 列和 String[][] 值

转载 作者:行者123 更新时间:2023-11-30 02:57:03 25 4
gpt4 key购买 nike

我尝试将 String[] 作为列名称和 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);

}

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

最佳答案

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

强烈建议通过向表格 View 和表格列提供类型参数来正确输入它们。

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

TableView<List<String>> table = new TableView<>();

table.setEditable(false);

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

TableColumn<List<String>, String> column = new TableColumn<>(columnNames[i]);

final int colIndex = i ;
column.setCellValueFactory(cellData ->
new SimpleStringProperty(cellData.getValue().get(colIndex)));

table.getColumns().add(column);

}

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<List<String>> inpData = FXCollections.observableArrayList(data);



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);

}

关于JavaFX TableView String[] 列和 String[][] 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36970112/

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