javafx
程序员文章站
2024-02-05 11:57:04
...
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 编写视图层
- 编写fxml文件
- 使用SceneBuilder来绘制控件
- 编写View类,注意fxml和view类需要放到同一个路劲下
- 继承
AbstractFxmlView
- 使用
@FXMLView
注解视图类 - [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JT6YsTXh-1604567518751)(图片/image-20201105162128516.png)]
- 继承
4.3 编写控制层代码
- 需要在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">
- 编写控制类
- 使用
@FXMLController
注解标注 - 编写一个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. 控件的声明
- 对每个控件的id赋值,然后在控制器类中使用id来声明变量,即可自动导入改控制,来控制控件的行为
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bh7Zk88v-1604567518755)(图片/image-20201105162902009.png)]
6. 事件的绑定
- 使用fxml绑定事件
- 通过控件对象动态绑定事件