我有这样的TableView此配置:复制的记录的TableView对JavaFX的
@FXML
private TableView<Budget> budgetTable;
@FXML
private TableColumn<Budget, String> idColumn, budgetNameColumn, buildingColumn, addressColumn, taxableColumn,
budgetTotalColumn, budgetStateColumn, clientColumn;
@FXML
private TableColumn<Budget, LocalDate> budgetDateColumn;
@FXML
private void initialize() {
...
clientColumn.setCellValueFactory(new Callback<CellDataFeatures<Budget, String>, ObservableValue<String>>() {
@Override
public ObservableValue<String> call(CellDataFeatures<Budget, String> data) {
if (data.getValue().getClient() != null) {
return data.getValue().getClient().nameProperty().concat(" ")
.concat(data.getValue().getClient().surnameProperty());
}
return null;
}
});
...
}
- 当应用程序启动时,该表工作正常。
- 我尝试添加新预算时遇到问题。我将它存储在数据库中,但返回到主视图时出现NullPointerException。
- 如果我像代码显示一样控制这个异常,我必须记录相同的新创建预算。
- 当我创建一个新的预算时,我删除了可观察列表的所有元素,并且以与第一个相同的方式(可以正常工作)再次填充它。
- 在下图中,最后两个记录是坏记录。它只会显示第一个和第二个。
谁能帮助我?
非常感谢。
您是否使用了自定义的'cellFactory'删除空元素,以及你展示的'cellValueFactory'? –
我没有使用cellFactory,只是像代码显示那样设置了列。 –