从表视图中删除行时的事件处理程序

时间:2016-04-19 18:18:12

标签: java javafx-8

我需要知道如何捕获从TableView和行的索引中删除行时发生的事件。此时从表视图中删除一行时,将调用TableView.getSelectionModel()。clearSelection()方法。但我想要的是选择表视图中可用的最后一个索引。

Tableview.getSelectionModel()。clearAndSelect()不是一个选项,因为有时会自动删除一行。

此致

1 个答案:

答案 0 :(得分:2)

对于具有类型的表格,例如Person

import javafx.collections.ListChangeListener.Change ;

// ....

TableView<Person> table = ... ;

table.getItems().addListener((Change<? extends Person> c) -> {
    while(c.next()) {
        if (c.wasRemoved()) {
            int numRemoved = c.getRemoved().size();
            int index = c.getFrom();
            System.out.println(numRemoved + " items removed from table at index "+index);
        }
    }
});

ListChangeListener.Change documentation描述了c.getFrom()c.getTo()c.wasRemoved()c.getAdded()等在各种情况下返回的值。