将数据添加到 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());
}
});
我遇到了一个问题,我的 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());
}
});