gpt4 book ai didi

java - 将数据写入 JavaFX Tableview

转载 作者:行者123 更新时间:2023-12-01 10:05:55 28 4
gpt4 key购买 nike

我以前从未使用过 tableview,而且对 Java 和 JavaFX 也很陌生。我尝试镜像一个示例,但由于数据来自内部创建的数据库客户端,我无法准确复制它。不管怎样,我的数据正在进入表中,但它的输入看起来像 csv 数据,并且每一列都没有放入其各自的列中。这是澄清我的问题的屏幕截图:

enter image description here

在此处获取列

   for (Column col : drs.getColumns()){
TableColumn tblCol = new TableColumn(col.getName());
tblCol.setCellValueFactory(new Callback<CellDataFeatures<ObservableList,String>,ObservableValue<String>>(){
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> p) {
return new SimpleStringProperty(p.getValue().toString());
}
});
table.getColumns().addAll(tblCol);
}

在此处获取行:

while (drs.hasNextRow()) {
ObservableList<String> row = FXCollections.observableArrayList();
for (int i = 0; i < drs.getColumns().length; i++) {
row.add(drs.getNextRow().getItem(i) + "");
}
data.add(row);
}

这是我无法将数据发送到表的地方。

table.setItems(data);
System.out.println("dis is data: " +data);

数据打印如下:

dis is data: [[data, data, data....], [data, data, data....], [data, data, data....]]

它获取每[行]并将其放入每条记录的每列中。我假设我需要的数据如下:

[[data], [data], [data]....[data]], [[data], [data], [data]....[data]], [[data], [data], [data]....[data]]
    } catch(Exception e){
e.printStackTrace();
System.out.println("everything is broken");
}
}

所以,我迷路了。我不知道自己在做什么,非常感谢您能为我提供的任何帮助。

最佳答案

TableView中,一行中的所有数据都与一个项目相关联。 TableColumn.cellValueFactory 用于选择应在列中显示的项目的“部分”。因此您应该使用它来选择值:

TableView<ObservableList<String>> table = ...
int index = 0;
for (Column col : drs.getColumns()) {
final int columnIndex = index++;
TableColumn<ObservableList<String>, String> tblCol = new TableColumn(col.getName());
tblCol.setCellValueFactory(new Callback<CellDataFeatures<ObservableList<String>, String>, ObservableValue<String>>(){
public ObservableValue<String> call(CellDataFeatures<ObservableList, String> p) {
return Bindings.stringValueAt(p.getValue(), columnIndex);
}
});
table.getColumns().add(tblCol);
}

这里是Bindings.stringValueAt用于从 ObservableList 中选择元素。

此外,您还需要每行使用一行:

while (drs.hasNextRow()) {
ObservableList<String> row = FXCollections.observableArrayList();
Row sourceRow = drs.getNextRow();
for (int i = 0; i < drs.getColumns().length; i++) {
row.add(Objects.toString(sourceRow.getItem(i)));
}
data.add(row);
}

关于java - 将数据写入 JavaFX Tableview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36481409/

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