现在我正在练习JavaFX。我有一个关于 ListView 的问题。我可以为 ListView 的多个选择创建一个监听器。但是,当我取消选择时,我创建的监听器不会反射(reflect)取消。我怎样才能让听众反射(reflect)这一点?以下是我制作的监听器。
ListView<String> lv = new ListView<>(FXCollections.observableArrayList(stringArray)); // stringArray is an array that I made.
lv.getSelectionModel().selectedItemProperty().addListener(ch -> {
System.out.println("size: " + lv.getSelectionModel().getSelectedIndices().size());
});
最佳答案
要在启用多个选择时更改选择,请将 ListChangeListener
添加到 selectedItems
列表(注意 selectedItems
,而不是 selectedItem
):
lv.getSelectionModel().getSelectedItems().addListener(
(ListChangeListener.Change<? extends String> ch) -> {
System.out.println("size: " + lv.getSelectionModel().getSelectedIndices().size());
}
);
请注意,如果您仅对空选择感兴趣,则可以这样做
Bindings.isEmpty(lv.getSelectionModel().getSelectedItems()).addListener(
(obs, selectionWasEmpty, selectionIsNowEmpty) -> {
if (selectionIsNowEmpty) {
System.out.println("Nothing is selected");
} else {
System.out.println("Something is selected");
}
}
);
关于java - 添加用于取消 ListView 中选择的监听器 (JavaFX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41448986/