我正在为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());
}
}
}
我正在使用PropertyChangeListener
来更新反应式。当然,大多数情况下,侦听器逻辑并不是那么简单。因此,代码库增长非常快。
是否有更优雅的方式将JavaFX UI与UI 独立后端类连接? 我是独立的,我可以提取模拟器实现而没有任何剩余的JavaFX依赖项。
答案 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方法)来实现侦听器,就像发送的代码段一样。
一些博客可供阅读: