我的代码中有一个JavaFX列表视图,可以选择多个项目。我已经弄清楚当选择一个项目时我需要使用哪个事件监听器但是当我取消选择一个项目时,这个监听器并不总是被触发。 所以我的问题是,是否有一个事件监听器可以选择和取消选择项目?
这是我目前正在使用的事件监听器:
lvLijst.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue)
{
//code
}
});
提前致谢。
答案 0 :(得分:1)
您需要收听所选项目的列表,而不是单个选定项目。如果启用了多个选择,selectedItemProperty()
将始终引用选择多个项目时选择的最后一个(时间)项目。列表更改时,此属性不会始终更改 - 特别是如果取消选择除最后一个项目之外的任何项目,则不会通知您的监听器每次更改列表。
相反,做
lvLijst.getSelectionModel().getSelectedItems().addListener((Change<? extends String> c) -> {
// code ...
});