2025年java spring实战(spring javafx)

java spring实战(spring javafx)SpringBoot 对于 Java 程序员来说可以是一个福音 它让程序员在开发的时候 大大简化了各种 spring 的 xml 配置 那么在 JavaFX 项目使用 SpringBoot 会是怎么样的体验呢 这次使用 GuyHub 的开源项目 springboot javafx support 体验一下 SpringBoot JavaFX 开发

大家好,我是讯享网,很高兴认识大家。



SpringBoot对于Java程序员来说可以是一个福音,它让程序员在开发的时候,大大简化了各种spring的xml配置。

那么在JavaFX项目使用SpringBoot会是怎么样的体验呢?

这次使用“GuyHub”的开源项目springboot-javafx-support体验一下SpringBoot + JavaFX开发。

采用最新的SpringBoot版本和springboot-javafx-support版本

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter</artifactId>    <version>2.3.2.RELEASE</version></dependency><dependency>    <groupId>de.roskenet</groupId>    <artifactId>springboot-javafx-support</artifactId>    <version>2.1.6</version></dependency>

讯享网

springboot-javafx-support 主要两个关键的组件:

  1. AbstractJavaFxApplicationSupport (启动类继承它)
  2. AbstractFxmlView (视图类继承它)

视图排版

这里使用FXML布局界面。

讯享网<Pane maxHeight=“-Infinity” maxWidth=“-Infinity” minHeight=“-Infinity” minWidth=“-Infinity” prefHeight=“400.0” prefWidth=“600.0” xmlns=”http://javafx.com/javafx/8.0.112”   xmlns:fx=“http://javafx.com/fxml/1”>   <children>      <Label layoutX=“99.0” layoutY=“109.0” prefHeight=“34.0” prefWidth=“394.0” text=“Hello World!”>         <font>            <Font size=“26.0” />         </font>      </Label>   </children></Pane>

视图类

视图类很简单,只需要继承AbstractFxmlView并添加@FXMLView注解即可。




@FXMLViewpublic class HelloworldView extends AbstractFxmlView {}

启动类

启动类跟SpringBoot的启动类差不多,不过需要需要继承AbstractJavaFxApplicationSupport,然后将主视图类传进去。

讯享网

这样一个超级简单的SpringBoot + JavaFX就完成了。

springboot-javafx-support默认带了启动界面,这在SpringBoot项目中是非常有必要的,因为SpringBoot项目通常来说启动都要一定的时间。

程序启动完成后,启动界面会自动关闭,显示程序主界面。

springboot-javafx-support 这个框架及其简单,所有源码总共才9个类,下面介绍一下这9个类。

  1. AbstractFxmlView 视频抽象基类,负责加载FXML界面,然后通过getView()来获取视图。
  2. AbstractJavaFxApplicationSupport 启动抽象基类,继承了JavaFX的Application,在init方法启动SpringBoot程序,并提供了一些声明周期的回调。
  3. Constant 一些配置key的常量,可以通过application.yml来配置JavaFX程序的标题,宽高、样式等。
  4. FXMLController Controller层的注解,使用这个注解的类将注册成为Spring Bean。
  5. FXMLView FXML视图层的注解,同样的,使用这个注解的类也将注册成为Spring Bean。
  6. GUIState 枚举单例,存储一样JavaFX的对象,如果Stage,Scene,HostService,系统托盘等。
  7. PropertyReaderHelper 配置读取工具。
  8. ResourceBundleControl 支持自定编码的ResouceBundle,针对I18N很有用。
  9. SplashScreen 默认启动动画界面。

springboot-javafx-support中有一些约定:

  1. 资源(fxmlcssi18n)放在resources中,目录结构跟View类的包目录结构一致。
  2. 将View类名的”View”去掉后所有字母转为小写作为资源的名称。

当然这些约定可以通过@FXMLView注解中的属性来调整。

public @interface FXMLView {  String value() default ”“;  String[] css() default {};  String bundle() default ”“;  String encoding() default ”ISO-8859-1”;  String title() default ”“;  String stageStyle() default ”UTILITY”;}

到目前为止还看不到springboot-javafx-support中spring的影子,接下来通过一个例子来展现一下springboot-javafx-support的魅力。


讯享网

这里通过两个视图切换作为例子:

调整之前的视图,新增调整到Hi视图的按钮,并将视图跟ViewController绑定,处理toHi事件。

讯享网<Pane maxHeight=“-Infinity” maxWidth=“-Infinity” minHeight=“-Infinity” minWidth=“-Infinity” prefHeight=“400.0” prefWidth=“600.0” xmlns=”http://javafx.com/javafx/8.0.112”   xmlns:fx=“http://javafx.com/fxml/1”  fx:controller=“example.ViewController”>   <children>      <Label layoutX=“99.0” layoutY=“109.0” prefHeight=“34.0” prefWidth=“394.0” text=“Hello World!”>         <font>            <Font size=“26.0” />         </font>      </Label>      <Button layoutX=“99.0” layoutY=“169.0” prefHeight=“34.0” prefWidth=“150.0” text=“Hi” onAction=“#toHi”/>   </children></Pane>

同样的Hi视图也绑定到ViewController中

<Pane maxHeight=“-Infinity” maxWidth=“-Infinity” minHeight=“-Infinity” minWidth=“-Infinity” prefHeight=“400.0” prefWidth=“600.0” xmlns=”http://javafx.com/javafx/8.0.112”   xmlns:fx=“http://javafx.com/fxml/1”  fx:controller=“example.ViewController”>   <children>      <Label layoutX=“99.0” layoutY=“109.0” prefHeight=“34.0” prefWidth=“394.0” text=“Hi IT青年!”>         <font>            <Font size=“26.0” />         </font>      </Label>      <Button layoutX=“99.0” layoutY=“169.0” prefHeight=“34.0” prefWidth=“150.0” text=“Hello” onAction=“#toHello”/>   </children></Pane>

这里跟之前写过的一些案例有点不同的时候,fxml和controller的关系是多对一的关系。(之前的案例都是一对一的关系)。

springboot-javafx-support组件的关系图如下:

JavaFX桌面应用-SpringBoot + JavaFX_java

ViewController中,将Helloworld和Hi视图注入进来,单点击按钮的时候进行视图切换。

JavaFX桌面应用-SpringBoot + JavaFX_java_02

ViewController源码如下:

讯享网

这里的@Autowired是Spring的注解,由于@FXMLController主键的Controller是Spring的bean,所以这里完全可以像spring开发一样编写代码。

如:@Autowired private FooService fooService;

FoorService是一个简单的接口




public interface FooService {  String service();}

其实现:

讯享网@Servicepublic class FooServiceImpl implements FooService {  @Override  public String service() {    return ”Foo Service”;  }}

springboot-javafx-support提供了默认的启动界面,当然也开放了自定义界面的入库。

自定义启动节目只需要继承SplashScreen并重写相关方法即可,这里简单的替换启动图案:







public class CustomLoadingView extends SplashScreen {  @Override  public String getImagePath() {    return ”/images/logo.png”;  }}

在启动类中指定启动界面:

讯享网@SpringBootApplicationpublic class App extends AbstractJavaFxApplicationSupport {  public static void main(String[] args) {    launch(App.class, HelloworldView.class, new CustomLoadingView(), args);  }}

这样启动界面就不再是之前的样子

JavaFX桌面应用-SpringBoot + JavaFX_java_03

springboot-javafx-support提供了一些案例,包括:

  1. 如何加载css
  2. 如何使用i18n
  3. 如何打开视图

等等。

有兴趣的话可以看看,GitHub传送门

https://github.com/roskenet/spring-javafx-examples

另外附送 springboot-javafx-support 的GitHub地址

https://github.com/roskenet/springboot-javafx-support

小讯
上一篇 2025-05-12 15:14
下一篇 2025-06-06 21:23

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/149298.html