我正在尝试在可编辑单元格中加载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);
答案 0 :(得分:1)
请注意,此处不需要ReadOnlyStringWrapper
,因为您从不使用它提供的ReadOnlyStringProperty
。 SimpleStringProperty
就足够了。
此外,这是不必要的:
ObservableList<String> infoHeader = FXCollections.observableArrayList();
...
FXCollections.observableArrayList(
infoHeader)
...
它只是将空ObservableList
的内容复制到新的ObservableList
。简单地使用FXCollections.observableArrayList()
作为第二个表达式可以达到同样的效果。
您可以使用onEditCommit
的{{1}}处理程序将值写入项目列表,但您还需要使用返回可编辑单元格的TableColumn
,例如{{ 1}}秒。此外,每个项目仍然需要从代码中添加。
cellFactory