如何从 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。
这些是我的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。