如何在JavaFx中将dynamacilly一个ArrayList值加载到可编辑的TableView列单元格中

时间:2016-11-07 18:51:04

标签: arraylist javafx tableview tablecell tablecolumn

我正在尝试在可编辑单元格中加载TableView ArrayList值。我已关注ReadOnlyStringWrapper加载ArrayList,但我需要编辑,怎么做?

ObservableList<String> infoHeader = FXCollections.observableArrayList();
tableView = new TableView(FXCollections.observableArrayList(
        infoHeader));
tableView.setId("index-table");
TableColumn<String, String> headerColumn = new TableColumn<>("HEADER");
headerColumn.setCellValueFactory((p) -> {
    return new ReadOnlyStringWrapper(p.getValue());
});


tableView.getColumns().addAll(headerColumn);
tableView.setEditable(true);

1 个答案:

答案 0 :(得分:1)

请注意,此处不需要ReadOnlyStringWrapper,因为您从不使用它提供的ReadOnlyStringPropertySimpleStringProperty就足够了。

此外,这是不必要的:

ObservableList<String> infoHeader = FXCollections.observableArrayList();
...
FXCollections.observableArrayList(
        infoHeader)
...

它只是将空ObservableList的内容复制到新的ObservableList。简单地使用FXCollections.observableArrayList()作为第二个表达式可以达到同样的效果。

您可以使用onEditCommit的{​​{1}}处理程序将值写入项目列表,但您还需要使用返回可编辑单元格的TableColumn,例如{{ 1}}秒。此外,每个项目仍然需要从代码中添加。

cellFactory