Переменная цикла JavaFX ForEach содержит значение вне ObservableList - PullRequest
0 голосов
/ 24 октября 2018

У меня есть ObservableList, ListView для его хранения и событие для обновления выбранных элементов на метку.

ObservableList<String> items = FXCollections.observableArrayList(
            "China", "Japan", "Korea", "India");
ListView<String> lvCountries = new ListView<>();
lvCountries.setItems(items);
lvCountries.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);

lvCountries.getSelectionModel().selectedIndexProperty().addListener(observable -> {
    ObservableList<Integer> indices = lvCountries.getSelectionModel().getSelectedIndices();
    if (indices.size() != 0) {
        StringBuilder stringBuilder = new StringBuilder("Selected items are");
        indices.forEach(index -> stringBuilder.append(" " + items.get(index)));
        lblSelected.setText(stringBuilder.toString());
    }
});

Все выглядит хорошо, но когда я нажимаю случайно на высокой скорости, иногда выдаетArrayIndexOutOfBoundsException, поскольку index содержит значение -1 .Опять же, это происходит только иногда , когда я быстро выбираю случайно элементы между объектами в режиме MULTIPLE в ListView.

Я не уверен, было ли это как-то связано с ObservableList или как foreachпетля работает или индексы.Программа не аварийно завершает работу или что-то еще, но я хотел бы понять, почему и как это происходит, и решение для этого.

Я использую обновление Java 8 181 (сборка 1.8.0_181-b13), IntelliJ IDEACE, MacOS 10.14

Заранее спасибо и извините за плохой английский.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...