使用IDEA快速搭建JavaFX和打包成EXE

2020年12月31日 作者 黄永龙

0. 前期准备

使用JAVAFX创建桌面应用 首先必须准备一下软件

  1. IDEA IDE
  2. SceneBuilder JavaFX UI界面编辑器
  3. exe4j jar包打包成独立运行的EXE

下载地址

SceneBuilder https://download2.gluonhq.com/scenebuilder/11.0.0/install/windows/x64/SceneBuilder-11.0.0.msi
exe4j https://download.apponic.com/VKAbypgjxD7ogO2hXwyPjx4v6mHrlikblaihF8cN8Suyephe-1ZHYqPQPfGMHBGKDl_bCCSnGjj6gBGLJ05ogZ1MKcWMyK7tJhXyCrW-AXK-BSrpLFp5vlhn_kuvan1D5nUVtbF6d_RYR4jhkE2d6gN5nWd-xsLmETfb/

1. 创建 简单 JavaFX 项目

菜单上选择File–>new–>Project

选择javaFX 然后 Next

填好项目名称 sample
选好路径 G:\workepace\sample
然后 Finish 等待项目创建完毕
项目名和路径你们自己随意

创建好的项目入口为Main
执行调试会出现空的窗口
一个简单的javaFX项目就创建好了

2. 集成Maven仓库

下面要集成maven仓库 方便我们安装第三方jar包工具

用鼠标右击项目sample文件夹,弹出的菜单栏上选择 添加框架

添加框架 Maven 然后点击OK

可以看到目录结构已经被改变
这时需要把目录结构改一下

改成以上这个样子就差不多了
这里简单说明一下
Main 这是程序入口执行的类
Controller\SampleController 这是事件控制器 主要作用执行控件的事件
resources\fxml\sample.fxml ui界面xml文档 用于标识winform界面和控件

Main 方法入口里面有个重载方法, start 这是用来初始化 加载 fxml文件初始化主窗口的

3. 修改fxml文件给WinForm窗口添加控件

双击打开 resources\fxml\sample.fxml
红色框着的地方是对应你的事件控制器,如果这里填错了,会报错程序启动失败

方法1 代码方式编写fxml

我们可以直接像html一样在fxml文件里面添加标签, 标签等于控件
比如下面,我在gridPane里面加个 标签, 在里面再加个 再在里面加个 这样我们就在BorderPane 的上方添加了个菜单栏

执行后出,窗口为

如果这样去编写肯定界面设计得很慢,这时就需要用到 SceneBuilder 了

方法2 使用SceneBuilder可视化编辑窗口

然后会出现 SceneBuilder 编辑界面, 如果没有会提示你选择 SceneBuilder 的安装路径

4. 如何给控件添加触发事件

直接在fxml上添加

在想要给添加事件的控件标签上添加属性即可
每个控件都有自己不同的事件,演示通过单击菜单项目的 Close 来 关闭程序


在MenuItem 的属性添加 onAction 事件 , 定义执行的方法名字 方面名前面必须要添加#
然后按ATL+Enter 键 根据IDEA的提示在 controller.SampleController 上创建一个事件方法

public void exit(ActionEvent actionEvent) {
    //结束程序的命令
    System.exit(0);
}

运行程序,选择菜单file–>Close
程序就会执行以上事件来结束运行.

5. 使用IDEA 把项目打包成 jar包

File–>Project Structure…


打包好后会在之前指定好的输出目录上生成sample的 jar包

直接 cmd 命令行执行 java -jar sample.jar
如果无误会出现之前调试的窗口

6. 安装exe4j把 jar包 打包成 EXE可执行程序,无需安装JVM环境

打开软件

选择Next
选择JaR in EXE mode

设置好程序的别名 和 路径
然后Next

这里GUI application是默认勾上的, 我们的项目是javaFx 就不用做任何改动
Executable name 这是指定 exe程序的名字
icon file 指定程序的图标 没有可不选

继续 Next
VM parameters 这是设置jvm虚拟机的参数
我现在的项目是utf-8的 所以参数填了 -Dfile.encoding=utf-8
后添加 Class path , 按旁边的加号


添加好后,
选择Main calss from 设置主入口
继续Next

设置好 Java 版本信息
选择 Advanced Options –>Search sequence

把里面默认的 jdk路径删掉, 要不然程序启动会默认找用户环境变量配好的和默认目录的

删掉后,进入jdk的安装目录下 找到 jre文件夹
比如我安装在 C:\Program Files\Java\jdk1.8.0_144
把里面的 jre 复制到 要打包的 jar目录下, 生成后的exe要依赖jre来执行

Next

连续 next 2次

出现这个画面就表示生成了,单击红色框住的就能查看是否能执行成功

如果出现这个错误,是因为我的操作系统是64位的,装的是64位的jdk,这个编译成32位的需要32位的jdk或者jre.
我们需要改成生成64位的exe文件

这项打勾就行了然后 点左边菜单的 第10项 Finished
再点击 如果成功运行就是打包成功

exit结束 会提示保存配置文件 强烈建议保存,方便代码修改过后打包exe时,不用再重新配置exe4j