获取JavaFX中ListView的最后一个选定项

时间:2014-03-06 22:51:39

标签: java javafx

我需要获取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());
                 }
            }
        }
    });

2 个答案:

答案 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()); 
    }
}