javafx

javafx

1. 简介

Sun公司已于2008年12月05日发布了JavaFX技术的正式版,它使您能利用 JavaFX 编程语言开发互联网应用程序(RIA)。该产品于2007年5月在JavaOne大会上首次对外公布。JavaFX技术主要应用于创建Rich Internet Applications(RIAs)。当前的JavaFX包括JavaFX脚本和JavaFX Mobile(一种运营于行动装置的操作系统),今后JavaFX将包括更多的产品。JavaFX Script编程语言(以下称为JavaFX)是一种declarative, statically typed(声明性的、静态类型)脚本语言。

——百度百科

2. 简述

由于最近接触到一个项目,需要做桌面应用的开发,由于目前主要使用java开发,为了能够使用java强大的类库,和高效的开发效率,于是我在java中寻找了几个GUI开发的技术例如swing,javafx。最后,我选择了javafx。

3. 为什么使用javafx

  • javafx比较新,Oracle2008年才推出的,功能比较强大,并且持续更新。

  • 可以使用SceneBuilder 绘制控件

  • 可以采用类似css的样式表动态更改控件的样式,以及Fxml来描述各个控件的属性和方法,非常类似于web开发

  • 可以使用mvc三层结构,来分离代码,解耦合

  • 可以使用spring框架集成javafx

4. 使用Spring集成javafx

4.1 构建项目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
    
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--最重要的-->
        <dependency>
            <groupId>de.roskenet</groupId>
            <artifactId>springboot-javafx-support</artifactId>
            <version>2.1.6</version>
        </dependency>

    </dependencies>

4.2 编写视图层

  1. 编写fxml文件
    1. 使用SceneBuilder来绘制控件
  2. 编写View类,注意fxml和view类需要放到同一个路劲下
    1. 继承 AbstractFxmlView
    2. 使用@FXMLView 注解视图类
    3. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JT6YsTXh-1604567518751)(图片/image-20201105162128516.png)]

image-20201105162128516.png

4.3 编写控制层代码

  1. 需要在fxml文件中声明控制类
<AnchorPane fx:id="addSubTitlePane" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.medicine.voicerg.mainpj.controller.AddsubtitlesController">
  1. 编写控制类
    1. 使用@FXMLController 注解标注
    2. 编写一个initialize方法,可以在当前视图初始化的时候被自动调用

4.4 修改启动类

package com.medicine.voicerg.mainpj;

import com.medicine.voicerg.mainpj.controller.LanguageModelDataEditorController;
import com.medicine.voicerg.mainpj.controller.MainController;
import com.medicine.voicerg.mainpj.view.*;
import de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MainpjApplication extends AbstractJavaFxApplicationSupport {

    public static void main(String[] args) {
        launch (MainpjApplication.class, ModelTrainView.class,args);
    }

}

5. 控件的声明

  1. 对每个控件的id赋值,然后在控制器类中使用id来声明变量,即可自动导入改控制,来控制控件的行为

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bh7Zk88v-1604567518755)(图片/image-20201105162902009.png)]

image-20201105162902009.png

6. 事件的绑定

  1. 使用fxml绑定事件
  2. 通过控件对象动态绑定事件
### JavaFX 使用教程及相关问题解决 #### 什么是 JavaFXJavaFX 是一种用于构建桌面应用程序的现代图形工具包,旨在替代传统的 Swing 工具集。它提供了丰富的 UI 控件集合以及强大的多媒体支持[^1]。 #### JavaFX 的体系结构 JavaFX 的架构设计围绕几个核心概念展开,包括场景图(Scene Graph)、事件处理机制、绑定特性以及 CSS 和 FXML 支持。开发者可以利用 `javafx.scene` 包下的类来定义用户界面,并通过 API 文档进一步探索其功能。 #### 开发环境准备 为了高效开发 JavaFX 应用程序,建议完成以下步骤: 1. **安装 JDK**:确保已安装至少 Java 8 或更高版本的 JDK。 2. **选择 IDE**:推荐使用 IntelliJ IDEA 或 Eclipse 等主流集成开发环境。 3. **配置项目**:当创建新项目时,指定 JavaFX 类型;如果 IDE 不直接支持,则需手动设置 JavaFX SDK[^3]。 #### 解决 “缺少 JavaFX 运时组件” 错误 遇到此类错误的原因通常是运行环境中缺失必要的 JavaFX 库文件。解决方案如下: - 将所需的 JavaFX JAR 文件添加至项目的类路径中; - 对于采用模块化系统的应用(如基于 Java 9+ 构建的应用),还需调整启动命令以包含模块路径参数 (`--module-path`) 并加载相应模块 (`--add-modules javafx.controls,javafx.fxml`)[^4]。 ```bash java --module-path /path/to/javafx-sdk/lib --add-modules javafx.controls,javafx.fxml -jar your-app.jar ``` #### 关于 Swing 与 JavaFX 的关系 虽然 Swing 继续作为 Java SE 的一部分存在,但它已被置于维护状态,不再引入新的特性和改进。因此,对于希望体验最新技术进步的开发者而言,考虑向 JavaFX 迁移或者将两者混合使用的方案变得尤为重要[^5]。 #### 如何将 JavaFX 集成到现有 Swing 应用中? 可以通过特定方法实现这一目标,具体指导可见相关官方文档或社区资源链接[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值