Внутри колонки рендерера у вас есть доступ к предмету. Вы просто еще не используете его для создания кнопки. Вместо
this.grid.addColumn(RenderedComponent.Renderer(DeleteButton::new))
Вы можете сделать это
this.grid.addComponentColumn(item -> new DeleteButton(item));
и изменить свой класс DeleteButton
так, чтобы он ожидал этого элемента в конструкторе. Теперь вы можете использовать этот элемент, чтобы удалить его из базы данных внутри прослушивателя щелчков
Если вы также хотите обновить сетку, вам также необходимо знать сетку внутри прослушивателя кликов. Либо передайте сетку тоже в DeleteButton, либо вы можете определить список щелчков вне класса DeleteButton. Это, вероятно, сделает ваш класс DeleteButton устаревшим, за исключением случаев, когда он имеет какой-либо пользовательский стиль или другие улучшения.
// using Button instead of DeleteButton for clarity
this.grid.addComponentColumn(item -> new Button("Delete", click -> {
this.personDao.remove(item); // NEVER instantiate your service or dao yourself, instead inject it into the view
this.grid.getDataProvider().refresh();
}));