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