JavaFX-如何连接后端和前端?

时间:2019-06-19 08:05:33

标签: java user-interface javafx model-view-controller backend

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

  • μC仿真(内存,CPU,ALU等)
  • 用于显示内存内容等的图形用户界面(JavaFX)。

如何以反应方式将模拟器与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());
        }
    }
}

我正在使用PropertyChangeListener来更新反应式。当然,大多数情况下,侦听器逻辑并不是那么简单。因此,代码库增长非常快。

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

1 个答案:

答案 0 :(得分:3)

如果您希望应用程序是响应式的,请考虑在后端使用RxJava(但是,还有其他响应式库,Comparison of Java reactive frameworks

我建议您使用RxJava(http://reactivex.io/introduction)。刚开始时这很困难,但是一旦获得它,您就可以跨相当多个平台(ruby,javascript,java等,http://reactivex.io/languages.html)访问该库

您将要了解的最重要的事情是可观察(generic docs | java docs)。然后只需使用RxJava api(很可能您将要使用subscription方法)来实现侦听器,就像发送的代码段一样。

一些博客可供阅读: