JavaFX 实践笔记
JavaFX 是 Java 桌面应用开发框架,适合编写工具类客户端、内部管理端、小型桌面程序。这个目录记录 JavaFX 使用过程中的打包、部署和踩坑。
内容索引
| 内容 | 重点 |
|---|---|
| JavaFX UI 线程 | 耗时任务、后台线程和安全更新界面 |
| JavaFX 打包流程 | 从可运行 JAR、运行时镜像到安装包验证 |
| jpackage 命令参考 | app-image、exe 的参数与 Windows 示例 |
JavaFX应用发布流程
mermaid
flowchart TD
A["编写 JavaFX 应用"] --> B["配置主类"]
B --> C["构建并验证 JAR"]
C --> D["准备运行时模块"]
D --> E["使用 jpackage 打包"]
E --> F["生成安装包"]
F --> G["在干净环境安装验证"]常见关注点
- JDK 版本和 JavaFX 版本要匹配。
- 打包时要确认主类、图标、应用名和版本号。
- 如果使用模块化,需要检查
module-info.java。 - 目标机器没有 JDK 时,需要把运行时一起打包。
先阅读完整打包流程,确认输入产物和验证步骤,再按 jpackage 命令参考执行打包。
JavaFX 项目结构
| 目录或文件 | 作用 |
|---|---|
Application 主类 | 启动 JavaFX 应用,加载窗口 |
| FXML | 声明界面结构 |
| Controller | 处理界面事件和业务交互 |
| CSS | 控制界面样式 |
| resources | 图标、图片、配置文件 |
不是所有 JavaFX 项目都必须使用 FXML。小工具可以直接用 Java 代码构建界面;界面复杂后,再考虑 FXML 拆分视图和控制逻辑。
事件处理流程
mermaid
flowchart LR
A[用户点击按钮] --> B[JavaFX Application Thread]
B --> C[Controller 事件方法]
C --> D{是否耗时任务}
D -- 否 --> E[直接更新 UI]
D -- 是 --> F[后台线程执行任务]
F --> G[Platform.runLater 更新 UI]开发注意事项
- UI 更新必须回到 JavaFX Application Thread。
- 耗时任务不能直接放在按钮点击事件里,否则界面会卡住。
- 打包前要确认图标、资源路径和主类配置。
- 如果使用第三方库,要确认 jpackage 能正确打包依赖。
- 桌面应用要特别注意异常弹窗和日志文件位置。
适合做的小工具
- 文件批处理工具。
- 图片压缩或转换工具。
- 内部系统桌面客户端。
- 本地配置生成器。
- 数据导入导出辅助工具。
