将数据添加到 JavaFX 中的表视图会为每一列提供相同的值

Adding data to tableview in JavaFX gives every column identical values

我遇到了一个问题,我的 table 中的每一列都具有完全相同的值。更具体地说,它们都具有第二列应具有的值。

但是,列名本身没问题。

假设我有一个 ObeservableList<ObservableList> data

然后我填充 data 看起来像:

[[11,12,13,14],[21,22,23,24],[31,32,33,34]]

我的 table(java 小程序,但我只是在这里写下了文字)最终看起来像这样:

Cat1|Cat2|Cat3|Cat4      when I want it to be:    Cat1|Cat2|Cat3|cat4
12  | 12 | 12 | 12                                11  | 12 | 13 | 14
22  | 22 | 22 | 22                                ....
32  | 32 | 32 | 32
...

有人知道问题出在哪里吗?

这是table视图部分的代码

System.out.println(data) tableview.setItems(data)

我认为这就足够了吗?

您需要向每一列添加一个 CellValueFactory 以告知该列需要显示嵌套 ObservableList 中的哪个值。

示例:

@FXML
private TableView<ObservableList> productsTable
@FXML
private TableColumn<ObservableList, String> column1
@FXML
private TableColumn<ObservableList, String> column2

...

    column1.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
        @Override
        ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
            return new SimpleStringProperty(param.getValue().getAt(0).toString());
        }
    });
    column2.setCellValueFactory(new Callback<TableColumn.CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
        @Override
        ObservableValue<String> call(TableColumn.CellDataFeatures<ObservableList, String> param) {
            return new SimpleStringProperty(param.getValue().getAt(1).toString());
        }
    });