Итак, я работаю над Java-программой, которая может хранить список студентов в TableView.Также есть опции для сортировки этого TableView и для отображения только учеников с оценкой A в ListView, которая появляется в новом окне.
Первые два варианта работают, но у меня проблема с фильтрацией ListView.Когда я нажимаю на кнопку, которая должна открыть новое окно с отфильтрованным ListView, ListView становится пустым.
Я не знаю, почему это происходит.
Я попытался инициализировать некоторые тестовые объекты и сохранить их в FilteredList, который работает нормально, но когда я сохраняю объекты из TextField в FilteredList, они фактически находятся в List, но они не появляются в ListView.
Это код из основного контроллера (метод showAStudents)
public void showAStudents() {
Dialog<ButtonType> dialog = new Dialog<>();
dialog.initOwner(anchorPane.getScene().getWindow());
dialog.setTitle("A Students");
dialog.setHeaderText("This is list of A Students");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("aStudents.fxml"));
try {
dialog.getDialogPane().setContent(fxmlLoader.load());
}
catch (IOException e) {
e.printStackTrace();
}
dialog.getDialogPane().getButtonTypes().add(ButtonType.CLOSE);
dialog.showAndWait();
AStudentsController aStudentsController =
fxmlLoader.getController();
aStudentsController.filterAStudents(students);
}
Это код из AStudentsController (метод фильтрации студентов)
public void filterAStudents(ObservableList<Student> students) {
FilteredList<Student> filteredList = new FilteredList<>(students,
aStudentsPredicate);
Iterator<Student> iterator = filteredList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next()); /* This println is showing
correctly filteredList
content */
}
listView.getItems().addAll(filteredList);
}
Этот вывод на консоль показывает всех студентов соценка в консоли, но они не отображаются в ListView.