首页 > 解决方案 > JavaFX - 如何连接后端和前端?

问题描述

我正在为 Pic16F84 µC 开发一个简单的基于 Java 的 MCU 模拟。这个模拟器分为两部分:

如何以反应方式将模拟器与 UI 连接起来?我想将 µC 模拟开发为独立于 JavaFX 的单元。这意味着我不想将 JavaFX 相关的属性类用作模拟器类中的类字段。

例如,假设我将以下控制器类绑定到 FXML 视图:

public class SimulatorController implements Initializable {

    @FXML private Label memoryContent;
    private Pic16F84Simulator simulator;

    ...

    public SimulatorController() {

        simulator.getMemory().addPropertyChangeListener(event -> {

            memoryContent.setText((String) event.getValue());
        }
    }
}

我正在使用PropertyChangeListeners 来更新响应式。当然大多数时候监听器的逻辑并不是那么简单。所以代码库增长非常快。

有没有更优雅的方式将 JavaFX UI 与 UI独立的后端类连接起来? 独立我的意思是我可以提取模拟器实现而没有任何剩余的 JavaFX 依赖项。

标签: javauser-interfacejavafxmodel-view-controllerbackend

解决方案


如果您希望您的应用程序是响应式的,请考虑在后端使用 RxJava(但是,还有其他响应式库,Java 响应式框架的比较

我建议你使用 RxJava(http://reactivex.io/介绍)。一开始是相当困难的,但是一旦你得到它,你就可以在很多平台上访问这个库(ruby、javascript、java等,http://reactivex.io/languages.html

您必须了解的最重要的事情是 Observable(通用文档| java 文档)。然后只需使用 RxJava api 实现侦听器(很可能您会想要使用 subscribe 方法),类似于您发送的代码片段。

一些博客阅读:


推荐阅读