JavaFx+Springboot+Maven集成下的javafx启动方式

 

1、创建springboot项目

(这里注意,是创建springboot项目,,不是javafx项目)

javafx在springboot下的启动方式,分为两种,

第一种是,实现 CommandLineRunner接口

在CommandLineRunner接口下,springboot会改为命令行启动,这时候修改main方法,重写SpringApplication下的run()方法即可

package com.example.demo;

import javafx.application.Application;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    /**
     * 启动入口
     *
     * @param args 启动参数
     */
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        app.run(args);
//        SpringApplication.run(DemoApplication.class, args);//原来的启动方法
    }

    @Override
    public void run(String... args) throws Exception {
        System.out.println("桌面应用");
        Application.launch(Main.class, args);
    }
}

这是main类

package com.example.demo;

import javafx.application.Application;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.StageStyle;

public class Main extends Application {

    /**
     * 程序初始化,这里可以初始化一些数据
     */
    @Override
    public void init() throws Exception {
        super.init();
    }

    /**
     * 程序关闭时,这里可以做关闭的确认等
     */
    @Override
    public void stop() throws Exception {
        super.stop();
    }

    /**
     * 开启窗口时,所有的 UI 程序写在这里
     *
     * @param primaryStage 窗口对象
     */
    @Override
    public void start(Stage primaryStage) throws Exception {

        // 设置程序标题
        primaryStage.setTitle("JavaFX");

        // 设置窗体宽高
        primaryStage.setWidth(1200);
        primaryStage.setHeight(600);

        // 设置窗口模式
        primaryStage.initStyle(StageStyle.UNIFIED);//正常模式

        // 显示窗口
        primaryStage.show();
    }

}

 

 

第二种,继承AbstractJavaFxApplicationSupport类,实现start(Stage stage) 方法,这个和javafx一模一样

AbstractJavaFxApplicationSupport这个类来自于springboot-javafx-support ,

javafxspringboot支持的库,官方是没有的,开源有一大堆。我采用的是springboot-javafx-support 地址是:springboot-javafx-support .这个库文档比较全,比较详细,文档地址:Spring Boot and JavaFx8 .

 
        
            de.roskenet
            springboot-javafx-support
            2.1.6
        
        
            de.roskenet
            springboot-javafx-test
            1.3.0
            test
        
        
        
            org.fxmisc.richtext
            richtextfx
            0.10.2
        

 

package com.example.main;

import com.example.demo.Main;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.IOException;
import java.net.URL;
import java.util.AbstractList;

@SpringBootApplication
public class DemoApplication extends AbstractJavaFxApplicationSupport {

    /**
     * 启动入口
     *
     * @param args 启动参数
     */
    public static void main(String[] args) throws IOException {
        launch(args);
    }

    @Override
    public void start(Stage stage) throws Exception {
//        super.start(stage);
        URL url=new URL("/FxmlView/test.fxml");
        Parent load = FXMLLoader.load(url);
//        AnchorPane load=new AnchorPane();
        Scene scene = new Scene(load, 800, 500);
        stage.setScene(scene);
        stage.show();
    }
}

 

你可能感兴趣的:(javafx,springboot)