我正在使用本教程http://code.makery.ch/library/javafx-8-tutorial/学习JavaFX,但在我的应用程序中我已经创建了登录模块,并希望创建三个不同的视图 - 取决于用户的类型:Admin,Patient,博士,所有这些都继承自User类。现在我创建Doctor视图并保留Main class中的患者列表:
private ObservableList<Patient> patientData = FXCollections
.observableArrayList();
public ObservableList<Patient> getPatientData() {
return patientData;
}
public Main() {
patientData.add(new Patient("Hans", "Muster", 23));
}
我不知道我的下一步行动应该是什么。 如果我与用户列出一个列表并让他们保持医生,患者和管理员这将是一个产生正确观点的问题,例如医生只有患者&#39;名单。对我来说另一个大问题是如何将其序列化为XML。 如果我制作三个单独的列表,它就不会是优雅的#39;我想的方式。
答案 0 :(得分:0)
您可以创建一个ObservableList<User>
,然后使用FilteredList
填充各种视图。
E.g。
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);