如何从 table 列 javafx 中删除行

How to delete row from table column javafx

这些是我的table列课程描述。如果单击一行(该行变为 'active'/突出显示),然后他们按下 Delete 按钮,它应该删除该行,我该怎么做?

我的 课程 专栏的代码:(以及我要将什么事件侦听器添加到我的 删除 按钮?)

@SuppressWarnings("rawtypes")
TableColumn courseCol = new TableColumn("Course");
courseCol.setMinWidth(300);
courseCol.setCellValueFactory(new PropertyValueFactory<Courses, String>("firstName"));

final Button deleteButton = new Button("Delete");

deleteButton.setOnAction(.....

只需从 table 视图的项目列表中删除所选项目。如果你有

TableView<MyDataType> table = new TableView<>();

那你就做

deleteButton.setOnAction(e -> {
    MyDataType selectedItem = table.getSelectionModel().getSelectedItem();
    table.getItems().remove(selectedItem);
});

如果有人想一次删除多行,可以接受类似的解决方案:

首先我们需要更改 table 中的 SelectionMethod 以允许多项选择:

table.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

在此之后,我们需要使用以下代码为按钮设置操作:

ObservableList<SomeField> selectedRows = table.getSelectionModel().getSelectedItems();
// we don't want to iterate on same collection on with we remove items
ArrayList<SomeField> rows = new ArrayList<>(selectedRows);
rows.forEach(row -> table.getItems().remove(row));

我们可以调用 removeAll 方法而不是 remove(也无需创建新集合),但这种解决方案不仅会删除选定的项目,还会删除它们的重复项(如果它们存在且未被选中)。如果您不允许在 table 中出现重复项,您只需使用 selectedRows 作为参数调用 removeAll。