【问题标题】:How to delete a TableRow in JavaFx如何在 JavaFx 中删除 TableRow
【发布时间】:2014-03-20 03:39:20
【问题描述】:

如何向 TableView 行中的 JavaFx 按钮添加一些操作,以便在按下按钮时删除特定的 TableRow 和填充特定行的相应数据库表?

TableView 上的每一行都有自己的删除按钮。

这是我目前所拥有的:

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"));

任何帮助将不胜感激。过去两天一直在这。

【问题讨论】:

    标签: java hibernate javafx tableview


    【解决方案1】:

    最明显的方法是从ObservableList 中删除项目或清除ObservableList 并重新填充它,然后再次将此列表分配给表!

    这会成功的!

    -干杯!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 2014-04-29
    • 2018-12-04
    相关资源
    最近更新 更多