gpt4 book ai didi

java - 如何删除 JavaFx TableView 行

转载 作者:搜寻专家 更新时间:2023-11-01 01:06:11 25 4
gpt4 key购买 nike

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

到目前为止,我什么也没得到。单击按钮没有任何反应。即使我像这样手动分配项目主键也不行:

NewBeautifulKiwi toDelete = (NewBeautifulKiwi) session.get(NewBeautifulKiwi.class, 97);

请帮助我完成这项工作;单击该按钮可删除它所属的 TableRow 以及填充该特定 TableRow 的数据库项目。到目前为止,ButtonClick 上什么也没有发生。

提前谢谢你。

附上

按钮也会打印在列为空的位置。如果你帮我解决了这个问题并且只有带数据的行上的按钮,它也会有帮助

类摘录:

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

最佳答案

我创建了一个 SSCCE使用按钮帮助删除行数据。请查看以下代码:

TableViewDeleteSample

关于java - 如何删除 JavaFx TableView 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22574239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com