Я создал ListView с кучей строк, она имеет режим множественного выбора и, наконец, я добавил слушатель с selectedItemProperty() так же, как следующее:ListView не срабатывает событие изменения на selectedItemProperty
ObservableList<String> myStringsObsList = FXCollections.observableArrayList(strings);
ListView<String> listView = new ListView<String>(myStringsObsList);
listView.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
listView.getSelectionModel().selectedItemProperty().addListener(
new ChangeListener<String>() {
public void changed(ObservableValue<? extends String> ov, String old_val, String new_val)
{
System.out.println("Selection Changed!");
}
}
});
Все напечатано OK при выборе элементов, но как только я начну снимать выделение с помощью Ctrl. Здесь ничего не печатается, так как измененное событие, вероятно, не срабатывает.
Кто-нибудь знает, если это ошибка? или я делаю что-то неправильно здесь?
В конце мне нужно только знать, изменился ли выбор каким-либо образом (будь то выбор или отмена выбора элементов), поэтому я могу запустить другой процесс.
EDIT --- При отмене выбора с помощью Ctrl, «Выбор изменен!» печатается только тогда, когда последний элемент выбранных элементов отменен.
У меня была такая же проблема, и ваше решение работает отлично. благодаря –