我正在使用JavaFX学习MVC模式,但感到困难。我正在使用FXML文件构建JavaFX应用程序。
每个FXML文件都有一个分配的控制器,但我认为这个控制器并不符合MVC模式的要求。我将其视为某种ViewController,它保存对FXML对象(按钮、面板等)的引用。
我的问题是:这个“ViewController”和真正的“Controller”之间的区别在哪里?什么对象应该负责做什么事情?例如,我在哪里设置actionListeners?
我正在使用JavaFX学习MVC模式,但感到困难。我正在使用FXML文件构建JavaFX应用程序。
每个FXML文件都有一个分配的控制器,但我认为这个控制器并不符合MVC模式的要求。我将其视为某种ViewController,它保存对FXML对象(按钮、面板等)的引用。
我的问题是:这个“ViewController”和真正的“Controller”之间的区别在哪里?什么对象应该负责做什么事情?例如,我在哪里设置actionListeners?
2022年更新
关于这个主题的最佳写作是Eden Coding的:
最佳StackOverflow答案是:
多年前的原始答案如下。其中一些信息仍然相关。某些链接和引用的框架已不再可用或受支持。但是,您不需要使用JavaFX核心功能之外的框架来实现这些概念(正如本更新中所示)。
MVC思考
MVC是一个相当松散的定义模式,对于MVC中的每个事物(特别是控制器)的含义往往存在着模糊的解释。Martin Fowler有一个关于GUI工具包中MVC体系结构的讨论。
关于设计模式和FXML
JavaFX核心的FXML基于处理的设计更像是一个工具包,而不是完整的开发框架。其目的是让其他框架能够在JavaFX和FXML的基础上进行扩展,底层JavaFX/FXML实现以及控制器不会对较高级别的框架施加任何形式的约束或体系结构限制。http://apps.jrebirth.org/jaf/3.0.0/JRebirthTour-3.0.0.jar
java -jar JRebirthTour-3.0.0.jar
http://apps.jrebirth.org/demo/8.5.0/JRebirthDemo-8.5.0.jar
java -jar JRebirthDemo-8.5.0.jar