我需要获取ListF的最后一个选定项目,该项目位于JavaFX中的MultipleSelectionMode中。我的代码如下,但它没有给我最后选择的项目。它似乎从所选项目中提供随机项目。
addDocumentPagesListView.getSelectionModel().getSelectedItems().addListener(new ListChangeListener<PageFile>() {
@Override
public void onChanged(ListChangeListener.Change<? extends PageFile> change) {
while (change.next()) {
if (change.wasAdded()) {
List <? extends PageFile> l = change.getAddedSubList();
Object o = l.get(l.size() - 1);
PageFile pf = (PageFile) o;
System.out.println("Showing pdf file: " + pf.getFile().getName());
}
}
}
});
答案 0 :(得分:2)
您应该查看始终指向上一个选定项目的selectedItemProperty
:
当选择模型设置为单选时,最常用的选项属性,但在多选模式下同样适用。在此模式下, 所选项目将始终代表最后一次选择 。
答案 1 :(得分:1)
以下代码有效,唯一的问题是,在进行多项选择时,会为每个多项选择调用两个标记为change.wasAdded()
的事件。
if (change.wasAdded()) {
List<? extends PageFile> l = change.getList();
Object o = l.get(l.size() - 1);
if (o != null) {
PageFile pf = (PageFile) o;
System.out.println("Showing pdf file: " + pf.getFile().getName());
}
} else if (change.wasRemoved()) {
List<? extends PageFile> l = change.getList();
Object o = l.get(l.size() - 1);
if (o != null) {
PageFile pf = (PageFile) o;
System.out.println("Showing pdf file: " + pf.getFile().getName());
}
}