2016-04-19 84 views
0

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

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

问候

回答

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()等返回的值。

+0

它可以工作,但正确的表达式是table.getItems()。addListener((ListChangeListener.Change <?extends Person> c) - > {});请编辑。问候。 –

+0

这只是取决于你的进口.... –

+0

好吧,我明白了。谢谢 !! –

相关问题