我正在通过本教程学习 JavaFX http://code.makery.ch/library/javafx-8-tutorial/ ,但在我的应用程序中,我制作了登录模块,并希望创建三个不同的 View - 取决于用户的类型:管理员、患者、医生,并且所有这些 View 都继承自 User 类。现在,我创建医生 View 并将患者列表保留在主类中:
private ObservableList<Patient> patientData = FXCollections
.observableArrayList();
public ObservableList<Patient> getPatientData() {
return patientData;
}
public Main() {
patientData.add(new Patient("Hans", "Muster", 23));
}
我不知道下一步该做什么。 如果我与用户一起制作一份列表并将其保留为医生、患者和管理员,那么生成正确的 View 将是一个问题,因为例如医生只有患者列表。对我来说另一个大问题是如何将其序列化为 XML。 如果我制作三个单独的列表,我认为这不会是“优雅”的方式。
最佳答案
您可以创建一个 ObservableList<User>
,然后使用 FilteredList
填充各种 View 。 .
例如
ObservableList<User> userList = FXCollections.observableArrayList();
// ...
ListView<User> patientView = new ListView<>();
patientView.setItems(new FilteredList<>(userList, Patient.class::isInstance));
如果你想要 ListView<Patient>
而不是ListView<User>
,最简单的方法是使用EasyBind图书馆:
ListView<Patient> patientView = new List<View>();
patientView.setItems(EasyBind.map(new FilteredList<>(userList, Patient.class::isInstance),
Patient.class::cast);
关于JavaFX 应用程序 - 架构问题 - 继承类的不同列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30821561/