JavaFX - 如何连接后端和前端?
JavaFX - How to connect back-end and front-end?
我正在为 Pic16F84 µC 开发基于 Java 的简单 MCU 仿真。本模拟器分为两部分:
- µC 模拟(内存、CPU、ALU 等)
- 用于显示内存内容等的图形用户界面 (JavaFX)
如何以反应方式将模拟器与 UI 连接?我想将 µC 模拟开发为 JavaFX 独立单元。这意味着我 不想 使用 JavaFX 相关 属性 class 作为 class 字段在模拟器的 classes.
例如,假设我将以下控制器 class 绑定到 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
s 来更新反应。当然大多数时候监听器的逻辑并不是那么简单。所以代码库增长非常快。
有没有更优雅的方式连接 JavaFX UI 和 UI independent 后端 class ?
对于独立的,我的意思是我可以在没有任何剩余的 JavaFX 依赖项的情况下提取模拟器实现。
如果您希望您的应用程序是反应式的,请考虑在后端使用 RxJava(但是,还有其他反应式库,)
我建议你使用 RxJava (http://reactivex.io/, introduction). It is pretty difficult at the beginning, but once you get it, you will have an access to this library across quite a few platforms (ruby, javascript, java etc., http://reactivex.io/languages.html)
您必须了解的最重要的事情是 Observable (generic docs | java docs)。然后使用 RxJava api 实现监听器(很可能你会想要使用订阅方法)类似于你发送的代码片段。
一些要阅读的博客:
我正在为 Pic16F84 µC 开发基于 Java 的简单 MCU 仿真。本模拟器分为两部分:
- µC 模拟(内存、CPU、ALU 等)
- 用于显示内存内容等的图形用户界面 (JavaFX)
如何以反应方式将模拟器与 UI 连接?我想将 µC 模拟开发为 JavaFX 独立单元。这意味着我 不想 使用 JavaFX 相关 属性 class 作为 class 字段在模拟器的 classes.
例如,假设我将以下控制器 class 绑定到 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
s 来更新反应。当然大多数时候监听器的逻辑并不是那么简单。所以代码库增长非常快。
有没有更优雅的方式连接 JavaFX UI 和 UI independent 后端 class ? 对于独立的,我的意思是我可以在没有任何剩余的 JavaFX 依赖项的情况下提取模拟器实现。
如果您希望您的应用程序是反应式的,请考虑在后端使用 RxJava(但是,还有其他反应式库,
我建议你使用 RxJava (http://reactivex.io/, introduction). It is pretty difficult at the beginning, but once you get it, you will have an access to this library across quite a few platforms (ruby, javascript, java etc., http://reactivex.io/languages.html)
您必须了解的最重要的事情是 Observable (generic docs | java docs)。然后使用 RxJava api 实现监听器(很可能你会想要使用订阅方法)类似于你发送的代码片段。
一些要阅读的博客: