在JavaFX中向tableview添加数据会为每列提供相同的值

时间:2015-06-18 15:18:52

标签: java javafx tableview

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

但是,列名称本身也没问题。

我们说我有ObeservableList<ObservableList> data

我填充data所以它看起来像:

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

我的桌子(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
...

任何人都知道问题是什么?

这里是tableview部分的代码

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

我认为这样就足够了吗?

1 个答案:

答案 0 :(得分:0)

您需要向每列添加一个告诉列的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());
        }
    });