JavaFX之springboot-javafx-support解析

目录

  • 一:项目结构
  • 二:AbstractJavaFxApplicationSupport
  • 三:@FXMLController
  • 四:@FXMLView
  • 五:GUIState
  • 六:Constant
  • 七:SplashScreen
  • 八:AbstractFxmlView

前言: springboot-javafx-support将Spring Boot与JavaFx 8链接在一起。让您所有的视图和控制器类都成为Spring Bean,并利用Spring Universe中的所有功能。

一:项目结构

JavaFX之springboot-javafx-support解析_第1张图片

二:AbstractJavaFxApplicationSupport

AbstractJavaFxApplicationSupport是springboot-javafx-support的核心类,继承了javaFX的Application类

launch
init
start
stop

上图:javaFX核心方法执行顺序
springboot-javafx-support对其也进行了重写(除launch)
在其中

  • launch
    springboot-javafx-support并没有重写Application的launch()方法,而是对其进行调用,不过在调用之前,进行了以下操作:
    1. savedInitialView(保存初始界面视图实例)
    2. savedArgs(保存command参数)
    3. splashScreen(判断splashScreen(闪屏)实例是否可用,否则新建实例)
    4. SystemTray(判断OS是否支持系统托盘,保存托盘实例到GUIState单例中)
    5. Application.launch (启动JavaFX)

    系统托盘(System Tray)就是 最小化图标,程序以最小化图标的方式保持运行状态,Windows系统最小化到右下角的底部任务栏,MAC OS X 最小化到顶部菜单栏,如下图所示:
    在这里插入图片描述
    在这里插入图片描述

  • init
    重写Application的init()方法
    1. 异步启动springboot主程序,将springboot应用上下文添加到springboot-javafx-support
    2. 加载应用图标
    3. springboot启动完成后启动javaFX
    4. 再开一线程异步加载闪屏线程

注意:线程在JavaFX应用程序线程上运行指定的Runnable

  • start
    重写Application的start()方法
    1. 用单例GUIState保存当前舞台
    2. 是否加载闪屏动画,(注意:不管是否加载,闪屏线程已经开启(在init中))
    3. 显示初始视图并关闭闪屏动画(闪屏线程完成)
  • stop
    super父类stop,关闭spring应用上下文

springboot-javafx-support 其他公共方法

  1. beforeShowingSplash(Stage splashStage):可以在闪屏动画启动之前进行一些操作
  2. beforeInitialView(final Stage stage, final ConfigurableApplicationContext ctx):在初始视图加载之前,添加操作
  3. showView(final Class newView):显示一个新的视图

上面的方法都在start中有调用,其中show()可以在切换界面是使用

  1. showView(final Class window, final Modality mode):可以另外开一个自定义的窗口,不过需指定父级层
  2. setTitle(final String title) :设置应用标题

提示,应为这个使用的一个单例保存的舞台实例,所以设置标题可以在视图加载之前的任意方法中都可调用(构造函数虚继承父类构造),init,beforeShowingSplash,beforeInitialView, showView,start)

三:@FXMLController

@FXMLControllerspringboot-javafx-support的注解
表明这是一个FXML处理器,它会给控制器添加一个@Component的注解,将类交给spring容器管理。

四:@FXMLView

@FXMLViewspringboot-javafx-support的注解
表示要在JavaFX视图的上下文中使用的类。这些类与fxml标记文件结合使用。它会给控制器添加一个@Component的注解,将类交给spring容器管理。

五:GUIState

在虚拟机(javafx)中保存场景和舞台实例(单例)

六:Constant

配置文件application.properties里面的键,配合PropertyReaderHelper可以读取设置的值
JavaFX之springboot-javafx-support解析_第2张图片
JavaFX之springboot-javafx-support解析_第3张图片

七:SplashScreen

闪屏动画,就是启动动画

  1. 可以重写此项以创建自己的初始窗格父节点。
  2. 是否显示闪屏动画
  3. 更改启动图片

八:AbstractFxmlView

AbstractFxmlView :它通过Spring为Java FX控制器提供DI,同时支持使用注解@FXMLView来驱动,配置fxml,css等

getView():主要方法,通过加载FXML初始化视图(如果尚未发生),并返回在FXML文件中指定的顶级节点(父节点)。
JavaFX之springboot-javafx-support解析_第4张图片

注意:继承AbstractFxmlView时子类需以View结尾

你可能感兴趣的:(JavaFX)