FilteredList包含元素,但它们不会出现在ListView中

时间:2019-05-05 14:59:56

标签: java javafx

因此,我正在研究一个Java程序,该程序可以在TableView中存储学生列表。 还有一些选项可以对TableView进行排序,并仅显示在新窗口中显示的ListView中具有A成绩的学生。

前两个选项有效,但是我在过滤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);
    }

此控制台中的println显示所有在控制台中有成绩的学生,但他们没有出现在ListView中。

0 个答案:

没有答案