代码拉取完成,页面将自动刷新
尽管当下javafx已经非常人性化, 加上很多大佬开发的第三方库使得javafx开发起来非常简单, 但是习惯后端开发的我觉得还可以更简单, 于是我斗胆仿照springmvc的一些思路开发了一个javafx的mvc框架。
idea作为库的方法
requires com.javafxmvc;
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);
}
}
import com.javafxmvc.annotation.FXComponent;
@FXComponent // 注册组件会调用无参构造函数
public class HelloComponent {
// =========
}
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");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.VBox?>
<VBox alignment="CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="173.0" prefWidth="266.0" xmlns="http://javafx.com/javafx/17" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.jco.controller.HelloController">
<children>
<Button mnemonicParsing="false" onMouseClicked="#helloButtonClick" text="Button" />
</children>
</VBox>
hello-view.fxml - 可视化编辑 绑定HelloController.java, 并且给按钮绑定点击事件触发的方法helloHuttonClick
效果图
主程序模板
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end
import com.javafxmvc.FXApplication;
import com.javafxmvc.annotation.FXComponentScan;
import javafx.application.Application;
import javafx.stage.Stage;
#parse("File Header.java")
@FXComponentScan
public class ${NAME} extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FXApplication.run(${NAME}.class);
}
}
控制器模板
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "") package ${PACKAGE_NAME};#end
import com.javafxmvc.annotation.FXController;
@FXController("${NAME}.fxml") // 加载resources/name-view.fxml文件作为页面
public class ${NAME}{
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。