# JavaFX-MVC **Repository Path**: geek-xd/JavaFX-MVC ## Basic Information - **Project Name**: JavaFX-MVC - **Description**: JavaFX-MVC,致敬JavaFX-MVC,有控制器、自动注入、自动包扫描等常见功能。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 27 - **Forks**: 2 - **Created**: 2023-01-05 - **Last Updated**: 2025-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: Javafx, Java ## README # JavaFx-MVC #### 介绍 1. 要求java版本为17 2. 本框架是javafx的开发框架,不是美化ui的框架 3. 支持注解继承 4. 支持注解覆盖 尽管当下javafx已经非常人性化, 加上很多大佬开发的第三方库使得javafx开发起来非常简单, 但是习惯后端开发的我觉得还可以更简单, 于是我斗胆仿照springmvc的一些思路开发了一个javafx的mvc框架。 #### 注解说明 ![输入图片说明](doc/images/image.png) #### 安装教程 1. 下载发行版jar包 2. 将jar包作为库 idea作为库的方法 1. 用idea打开项目。 2. 创建libs文件夹。 3. 将jar包移动到libs文件夹内。 4. 右键libs文件夹,找到作为库。 #### 使用说明 * 使用module-info.java的话添加如下语句 ``` requires com.javafxmvc; ``` * 启动类 ```java import com.javafxmvc.FXApplication; import com.javafxmvc.annotation.FXComponentScan; import javafx.application.Application; import javafx.stage.Stage; @FXComponentScan public class HelloApplication extends Application { @Override public void start(Stage stage) throws Exception { FXApplication.run(JCOApplication.class); } } ``` * NameComponent.java - 组件写法 ```java import com.javafxmvc.annotation.FXComponent; @FXComponent // 注册组件会调用无参构造函数 public class HelloComponent { // ========= } ``` * NameController.java - 页面控制器写法 ```java import com.javafxmvc.annotation.FXAutowired; import com.javafxmvc.annotation.FXController; import com.javafxmvc.annotation.FXWindow; import com.javafxmvc.enums.FXWindowEnum; import com.javafxmvc.utils.DialogUtil; import javafx.fxml.FXML; @FXController("hello-view.fxml") // 加载resources/name-view.fxml文件作为页面 @FXWindow(FXWindowEnum.MAIN_WINDOW) // main 作为主程序窗口 public class HelloController { @FXAutowired // 自动注入上面定义的组件 HelloComponent helloComponent; @FXML // hello-view.fxml中的按钮点击事件 private void helloHuttonClick() { // 使用DialogUtil弹窗 DialogUtil.Message.info("hello"); } } ``` * hello-view.fxml - 具体页面写法 ```xml