如何从表列javafx

时间:2016-01-18 14:22:40

标签: java javafx tablecolumn

enter image description here

这些是我的表格列 课程说明。如果一个人点击一行(该行变为“活跃' /突出显示”),他们按删除按钮就会删除该行,我该怎么做?

我的课程列的代码:(以及我添加到 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(.....

2 个答案:

答案 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。