一、JavaFX简介:
JavaFX是一个开源的下一代客户端应用平台,适用于基于Java构建的桌面、移动端和嵌入式系统。 它是许多个人和公司的共同努力的成果,目的是为开发丰富的客户端应用提供一个现代、高效、功能齐全的工具包。
二、开发环境:
开发工具:IntelijIdea,我选用的版本号为:2020.3.2。
JDK: openjdk-16 ,开发fx jdk版本必须11及其以上,我这里用的是jdk16。
SDK: javafx-sdk-16 , sdk我用的是JavaFx最新发行版 JavaFX16,最新版目前已经到17了。
开发方式:
1、纯IDEA开发JavaFX。
2、Maven方式开发JavaFX(这个实际项目用的多)。
3、还可以通过gradle方式开发JavaFx(这里暂不介绍)。
参考资料:https://openjfx.cn/openjfx-docs/JavaFX官网。
三、纯IDEA开发JavaFX:
1、从官网下载JavaFX SDK最新发布版,比如JavaFX Windows x64 SDK Version 16,点击Download,将下载后的sdk解压到指定目录下,比如D盘,如下图:
2、新建一个JavaFX项目,为项目起1个名字,如JavaFxDemo1,如下图:
3、默认Idea无法识别JavaFx项目,需要分别为项目添加jdk和sdk:
转至File -> Project Structure -> Project,并将jdk设置为16,sdk选择X或者更高版本:
若电脑上没有jdk的话,可以通过Download Jdk下载最新版的jdk,比如:openjdk-16:
4、配置sdk,选择Libraries,点击+号,点击Java:
找到你刚才下载的sdk保存位置,比如:D:\javafx-sdk-16\lib,进行添加:
添加完lib之后,Libraries是这个样子的:
5、配置VM options:
配置完jdk和sdk后,Idea是能识别JavaFX项目了,编译也不报错,可是运行时会提示找不到运行时环境,这个时候需要配置Configurations,添加虚拟机选项,这个是这种方式的关键(官网上虽然也是这么介绍搭建的,但是漏了一些细节):
点击Edit Configurations后打开的界面默认是没有VM options这个选项的,如下图:
先不急着配这个,先去配置一个可以在将来的项目中使用的全局变量,转至 Preferences (File -> Settings) -> Appearance & Behavior -> Path Variables,并将变量的名称定义为PATH_TO_FX,然后浏览至JavaFX SDK的lib文件夹以设置其值,然后单击Apply,如下图:
然后再回到刚才配置VM options的地方,点击Edit Configurations,刚才说了默认是没有VM options这个选项的,而这个是这种方式的关键。首先你需要点击右侧的 Modify options,在弹出的下拉菜单中找到Add VM options 如下图:
添加完之后,这时会发现比原先面板多出来1个VM options的输入框,可以在里面输入VM options的配置参数了:
在VM options输入框中输入参数(官方推荐):--module-path ${PATH_TO_FX} --add-modules javafx.controls,javafx.fxml
然后点击OK,这时候再去运行Main程序就不会再报错了,并且程序运行完毕,会弹出一个框,类似于swing那种,当然你可以自定义里面的内容,实现自己想要展示的效果:
6、项目目录结构:
项目默认由3部分组成,首先是程序的启动类Main,用于加载布局文件,启动窗口,sample.fxml用于存放程序中用到的布局控件,Controller控制器,用于监听控件各种点击事件的,可自定义。如下图所示
四、Maven方式开发JavaFX:
1、首先新建项目,选择maven方式,勾上Create from archetype,如果尚未安装JavaFX原型,请选择Add archetype...并设置groupId(org.openjfx),artifactId(javafx-maven-archetypes)和版本(0.0.5),然后按OK。如下图:
等插件安装完成后记得选中该插件,然后再点击下一步,如下图:
为新建的项目添加1个名字,如:JavaFxDemo2:
最关键的一步来了,采用这种方式的特别注意,在弹出的面板中,要修改archetypeArtifactIdd的值,将默认的javafx-maven-archetypes修改成javafx-archetype-fxml(使用FXML时),或者javafx-archetype-simple(不使用FXML时)如下图:
做完上一步操作后,您还应该声明其版本号,我这里用的JavaFX版本为16,如下图:
点击OK,Finish后,等待maven去下载依赖。待maven依赖下载好后,pom.xml如下表所示:本项目用到的jdk和JavaFX版本号皆为16,JavaFX插件版本号为0.0.5,核心依赖是javafx.controls和javafx.fxml)
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2、运行JavaFX程序:
找到App程序启动类,运行App,程序运行成功之后,默认弹出如下界面,类似于swing,我们可以自定义里面的内容来展示:
3、项目目录结构:
目录结构如下图所示,主要分为3大部分,分别是存放程序源代码的java目录,存放程序布局资源等的resources目录,和Maven依赖文件pom.xml。
Java目录中存放称着启动类App和自定义的控制器Controller,该程序主要实现的就是在两个界面中来回跳转,响应了控件的点击事件,这里重点讲下module-info.java这个文件,这个java文件跟我们常看到的java类文件不同,你看他的文件名和类名并不相同,这个文件是用来做模块化开发的,你可以理解为是1个配置文件,用于将本程序用的到的所有modul,java程序,布局文件组合起来。由于FXML使用反射来访问模块中的控制器,因此已将其打开javafx.fxml。如下图所示:
requires即必要的,opens to 打开...到.... exports 即输出到....