2017-02-17 29 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 ... 
});