因此,我正在研究一个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中。