如何删除JavaFx TableView行

如何删除JavaFx TableView行,java,hibernate,javafx,tableview,Java,Hibernate,Javafx,Tableview,我有一个JavaFx TableView,每一行都有一列,列上有一个delete按钮,当单击该按钮时,会删除TableRow,以及H2数据库中的相应条目 到目前为止,我什么也没得到。点击按钮时不会发生任何事情。即使我手动分配项目主键也不行,如下所示: NewBeautifulKiwi toDelete = (NewBeautifulKiwi) session.get(NewBeautifulKiwi.class, 97); 请帮我完成这项工作;单击该按钮可删除它所属的TableRow以及填充该

我有一个JavaFx TableView,每一行都有一列,列上有一个delete按钮,当单击该按钮时,会删除TableRow,以及H2数据库中的相应条目

到目前为止,我什么也没得到。点击按钮时不会发生任何事情。即使我手动分配项目主键也不行,如下所示:

NewBeautifulKiwi toDelete = (NewBeautifulKiwi) session.get(NewBeautifulKiwi.class, 97);
请帮我完成这项工作;单击该按钮可删除它所属的TableRow以及填充该特定TableRow的数据库项。到目前为止,ButtonClick上根本没有发生任何事情

先谢谢你

Ps.

当列为空时,也会打印按钮。如果你能帮我解决这个问题,并且只在有数据的行上有按钮,这也会有所帮助

课程摘录:

公共类HomeController实现可初始化{
@FXML
公共静态表视图KIWI_表;
@FXML
私人新西兰行动;
//初始化控制器类。
@凌驾
公共void初始化(URL、ResourceBundle rb){
setCellValueFactory(新的PropertyValueFactory(“KiwiAction”);
setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableColumn参数){
最终按钮;
Image Image=新图像(getClass().getResourceAsStream(“/MediaTools/Error.png”);
最终图像视图=新图像视图();
imageView.setFitHeight(16);
imageView.setFitWidth(16);
设置图像(图像);
按钮=新按钮(“,图像视图);
最终TableCell单元格=新TableCell(){
@凌驾
public void updateItem(对象项,布尔值为空){
如果(项!=null){
super.updateItem(项,空);
最终VBox VBox=新VBox(0);
按钮。设置对齐(位置中心);
按钮。最大宽度(32);
getStyleClass().add(“deleteButton”);
最终表格单元c=此;
setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
TableRow TableRow=c.getTableRow();
NewBeautifulKiwi项=(NewBeautifulKiwi)tableRow.getTableView().getItems().get(tableRow.getIndex());
Session Session=HibernateUtil.getSessionFactory().openSession();
session.beginTransaction();
NewBeautifulKiwi toDelete=(NewBeautifulKiwi)session.get(NewBeautifulKiwi.class,item);
删除(toDelete);
session.getTransaction().commit();
session.flush();
session.close();
系统输出打印项次(“删除”);
}
});
vbox.getChildren().add(按钮);
设置图形(vbox);
}
}
};
单元格设置图形(按钮);
返回单元;
}
});
});
Kiwi.setCellValueFactory(新财产价值工厂(“Kiwi”);
}
我创建了一个按钮,用以帮助删除行数据。请查看以下代码:


很抱歉花了这么长时间才接受您的回答。我已经离开了。谢谢。你的回答很有帮助。再次感谢你。
public class HomeController implements Initializable {

    @FXML
    public static TableView<NewBeautifulKiwi> KIWI_TABLE;

    @FXML
    private TableColumn<NewBeautifulKiwi, Object> KiwiAction;

    // Initializes the controller class.
    @Override
    public void initialize(URL url, ResourceBundle rb) {

        KiwiAction.setCellValueFactory(new PropertyValueFactory<NewBeautifulKiwi, Object>("KiwiAction"));
        KiwiAction.setCellFactory(new Callback<TableColumn<NewBeautifulKiwi, Object>, TableCell<NewBeautifulKiwi, Object>>() {
            @Override
            public TableCell<NewBeautifulKiwi, Object> call(TableColumn<NewBeautifulKiwi, Object> param) {
                final Button button;
                Image image = new Image(getClass().getResourceAsStream("/MediaTools/Error.png"));
                final ImageView imageView = new ImageView();
                imageView.setFitHeight(16);
                imageView.setFitWidth(16);

                imageView.setImage(image);

                button = new Button("", imageView);
                final TableCell<NewBeautifulKiwi, Object> cell = new TableCell<NewBeautifulKiwi, Object>() {
                    @Override
                    public void updateItem(Object item, boolean empty) {
                        if (item != null) {
                            super.updateItem(item, empty);

                            final VBox vbox = new VBox(0);

                            button.setAlignment(Pos.CENTER);
                            button.maxWidth(32);
                            button.getStyleClass().add("deleteButton");

                            final TableCell<NewBeautifulKiwi, Object> c = this;

                            button.setOnAction(new EventHandler<ActionEvent>() {
                                @Override
                                public void handle(ActionEvent event) {
                                    TableRow tableRow = c.getTableRow();
                                    NewBeautifulKiwi item = (NewBeautifulKiwi) tableRow.getTableView().getItems().get(tableRow.getIndex());

                                    Session session = HibernateUtil.getSessionFactory().openSession();
                                    session.beginTransaction();

                                    NewBeautifulKiwi toDelete = (NewBeautifulKiwi) session.get(NewBeautifulKiwi.class, item);
                                    session.delete(toDelete);
                                    session.getTransaction().commit();
                                    session.flush();
                                    session.close();
                                    System.out.println("Deleted");
                                }
                            });
                            vbox.getChildren().add(button);
                            setGraphic(vbox);
                        }

                    }
                };
                cell.setGraphic(button);
                return cell;
            }
        });

        });

        Kiwi.setCellValueFactory(new PropertyValueFactory<NewBeautifulKiwi, String>("Kiwi"));
}