欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

(三)创建基于maven的javaFX+springboot项目创建

程序员文章站 2023-01-20 20:08:59
创建基于maven的javaFx+springboot项目有两种方式,第一种为通过非编码的方式来设计UI集成springboot;第二种为分离用户界面(UI)和后端逻辑集成springboot,其中用户界面为fxml文件。 maven依赖 创建StartMain类,并继承Application 项目 ......

创建基于maven的javafx+springboot项目有两种方式,第一种为通过非编码的方式来设计ui集成springboot;第二种为分离用户界面(ui)和后端逻辑集成springboot,其中用户界面为fxml文件。

maven依赖

        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter-actuator</artifactid>
            <version>${spring.boot.version}</version>
        </dependency>
        <dependency>
            <groupid>org.springframework.boot</groupid>
            <artifactid>spring-boot-starter</artifactid>
            <version>${spring.boot.version}</version>
        </dependency>
        <dependency>
            <groupid>de.roskenet</groupid>
            <artifactid>springboot-javafx-support</artifactid>
            <version>${springboot-javafx-support.version}</version>
        </dependency>    

创建startmain类,并继承application

import javafx.application.application;
import javafx.geometry.insets;
import javafx.scene.group;
import javafx.scene.scene;
import javafx.scene.control.button;
import javafx.scene.control.label;
import javafx.scene.layout.gridpane;
import javafx.scene.layout.hbox;
import javafx.stage.stage;
import org.springframework.boot.commandlinerunner;
import org.springframework.boot.springapplication;

import java.util.objects;
import java.util.function.consumer;

/**
 *  maven构建javafx项目启动类
 */
public class startmain extends application implements commandlinerunner, consumer<stage> {

    /**
     * 窗口启动接口,原理:
     * 1. run(string... args)中给springstartmain赋值
     * 2. start(stage primarystage)中调用了springstartmain来操作primarystage
     * 3. 而springstartmain实际上是spring管理的startmain一个对象,因此accept方法中可以操作spring管理的任何对象
     */
    private static consumer<stage> springstartmain;
    private final button btnstart = new button("开 始");

    @override
    public void accept(stage stage) {

        final gridpane gridpane = new gridpane();
        gridpane.setprefwidth(700);
        gridpane.setpadding(new insets(10, 10, 10, 10));
        gridpane.setvgap(10);
        gridpane.sethgap(10);
        btnstart.setstyle("-fx-padding: 10;-fx-end-margin:20;");
        hbox hbox1 = new hbox();
        hbox1.getchildren().addall(btnstart);
        hbox1.setspacing(20);
        gridpane.addrow(2, new label(), hbox1);
        //页面
        group root = new group();
        scene scene = new scene(root, 720, 500);
        scene.setroot(gridpane);

        //设置标题
        stage.settitle("hello world");
        //stage的标题将会是hello
        stage.setscene(scene);
        stage.show();
    }

    @override
    public void start(stage primarystage) throws exception {
        springstartmain.accept(primarystage);
    }

    @override
    public void run(string... args) throws exception {
        springstartmain = objects.requirenonnull(this);
    }

    public static void main(string[] args) {
        //启动spring-boot
        springapplication.run(startmain.class, args);
        //启动窗口
        application.launch(args);
    }

}

项目结构如下:

(三)创建基于maven的javaFX+springboot项目创建