2017-02-17 76 views
0

我的代码中有一个JavaFX列表视图,可以选择多个项目。我已经计算出当选择某个项目时需要使用哪个事件侦听器,但是当我取消选择某个项目时,并不总是触发此侦听器。 所以我的问题是,是否有选择和取消选择项目的事件监听器?在JavaFx列表视图中进行多选的事件监听器

这是我目前使用的事件侦听器:

lvLijst.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() { 
     @Override 
     public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) 
     { 
      //code 
     } 
    }); 

在此先感谢。

回答

1

您需要聆听选定项目的列表,而不是单个选定项目。当您启用多项选择时,selectedItemProperty()将始终参考选择多个项目时选择的最后(时间)项目。当列表发生变化时,该属性不会总是发生变化 - 具体而言,如果您取消选择了最后一个选定项以外的任何项目,那么您的侦听器将不会收到有关该列表每次更改的通知。

相反,做

lvLijst.getSelectionModel().getSelectedItems().addListener((Change<? extends String> c) -> { 
    // code ... 
});