JavaFX应用程序 - 体系结构问题 - 继承类的不同列表

时间:2015-06-13 17:31:37

标签: java javafx jaxb

我正在使用本教程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;我想的方式。

1 个答案:

答案 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);