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

标签 java javafx jaxb

我正在通过本教程学习 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/

相关文章:

Java:在 JPanel 上进行像素完美绘图

java - 使用 Maven 构建时 JasperReports 找不到字体

java - Ormlite queryRaw 的自动格式化日期参数

Java 默认图标集

单击按钮文本时 JavaFX 按钮出现错误

java - 在 Eclipse 中设置 JavaFX 独立构建时遇到问题

Java - 突破物理学, Racket 碰撞时的球方向?

java - 为什么 MOXy JAXB 编码为空字符串而 JAXB 引用实现却没有?

java - JaxbUnmarshaller 和 Package-info 不起作用

eclipse - Maven在Eclipse中添加源目录