这些是我的表格列 课程和说明。如果一个人点击一行(该行变为“活跃' /突出显示”),他们按删除按钮就会删除该行,我该怎么做?
我的课程列的代码:(以及我添加到 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(.....
答案 0 :(得分:14)
只需从表格视图的项目列表中删除所选项目即可。如果你有
TableView<MyDataType> table = new TableView<>();
然后你做
deleteButton.setOnAction(e -> {
MyDataType selectedItem = table.getSelectionModel().getSelectedItem();
table.getItems().remove(selectedItem);
});
答案 1 :(得分:1)
如果有人想要一次删除多行,则有类似的解决方案可以接受:
首先我们需要在表格中更改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方法而不是删除(也没有创建新的集合),但是这样的解决方案不仅会删除选定的项目,还会删除它们的副本(如果它们存在且未被选中)。如果您不允许在表格中使用重复项,则只需使用selectedRows作为参数调用removeAll。