JavaFX 2026年10月社区动态汇总
以下是 2026 年 10 月的 JavaFX LinksOfTheMonth。你可以在 jfx-central.com 上找到每周链接列表。我们漏掉了什么吗?你希望把什么内容纳入下一期概览?请通过电子邮件告诉我们。
核心
- John Hendrikx 将 JDK-8290310:ChangeListener 事件不正确 集成到 OpenJFX 中。相关评审线程(RFR: 8290310)讨论超过 50 条消息。
- mstr2 在拉取请求中的评论很值得注意:“历经每一个版本、跨越漫长时光,这个 PR 始终屹立不动。如同变化之海中的一块磐石。贡献者来来去去。JDK 渐渐老去。但这个 PR 一直都在。到了某个时刻,我们不再把它视为待完成的工作,而开始把它看作一处珍贵的里程碑。如今,一个时代结束了。我们曾为又一轮评审做好准备,却没有为它的落幕做好准备。”
- Johan Vos 宣布 JavaFX 17.0.21、21.0.13、25.0.5 和 27.0.1 的 CPU(关键补丁更新)版本发布。所有构建均可免费使用,Gluon 提供商业支持。“这个版本包含大量安全修复,我不得不逐行检查。对我来说,这是有史以来最艰难的一次,但我对结果很满意。”
- 来自 OpenJFX 开发邮件列表:
- OpenJFX 团队集成了 RichTextArea 图像导入支持:JDK-8388276 为
RichTextArea控件带来导入图像的能力。 - OpenJFX 团队修复了 refresh() 后 TableView 单元格陈旧的问题:JDK-8394617 解决了一个 bug:
TableView.refresh()会在 VirtualFlow 堆中留下陈旧单元格,当滚动回视图时显示旧内容。 - OpenJFX 集成 D3D9 光照缓存优化(JDK-8392736):一项更改已集成到 OpenJFX 主线,它会缓存光照,而不是每次调用都重新上传到 GPU,从而提升 Direct3D9 渲染性能。
- JavaFX on Wayland——可用的概念验证 在 openjfx-dev 邮件列表中分享:一位社区贡献者展示了一个可用的概念验证,演示 JavaFX 对原生 Wayland 的支持,这是 Linux 桌面长期以来的需求。
- 已集成:8384258:ListenerHelper 中的内存泄漏:JavaFX 内部
ListenerHelper的内存泄漏修复已集成到 OpenJFX。 - 已集成:8264588:双击 TextArea 中的单词会选中错误的单词:在
TextArea中双击时单词选择不正确的修复已集成到 OpenJFX。
- OpenJFX 团队集成了 RichTextArea 图像导入支持:JDK-8388276 为
应用
- Max Xiong 分享了一张新截图,展示了他正在进行的 #BuildInPublic 项目 DataCollie,并指出:“PostgreSQL 的权限管理比 MySQL 复杂得多。不过,我每天都在取得一点小进展。”
- Mike 构建了 Klunk,一个 JavaFX 日志查看器,让大型日志更易浏览和搜索。它把来自文件、数据库、Kubernetes Pod、SFTP 和 HTTP 的日志合并到一个按颜色编码的流中,支持类 SQL 过滤、书签、实时跟踪,以及基于 SQLite 处理数百万行。免费使用,并为 Windows、Linux 和(未测试的)macOS 提供捆绑运行时。
- 继上周的用于临时电力设备自动化测试记录的内部 JavaFX 工具之后,@afparks 分享了两个新视频。最新视频展示了新的用户和角色页面,其中权限表具有在滚动时固定不动的粘性表头,还有一个悬浮在行上方的重叠滚动条,而不是占用右侧空间。
- Frank Delporte 发布了 MelodyMatrix 2.0.0,新增 Learn 板块,包含跟踪等级、时长和进度的课程卡片;Fly-Over 视图以 3D 形式显示乐谱,并在播放时高亮音符;Convert 功能可在本地把 mp3、wav 和其他音频文件转换为 MIDI。
- AsharPeshimam 在 Microsoft Store 上发布了一个 Java PDF 应用,在 r/JavaFX 分享了故事,并征求反馈。
- Klunk,一个 JavaFX 日志查看应用 由 XenFive 分享在 r/JavaFX 上。“它目前是 beta 版,但我每天使用都没有问题,觉得别人可能也会觉得有用。欢迎反馈、bug 报告或功能想法。”
- Max Xiong 正准备发布 DataCollie,这是他使用 JavaFX 构建的数据库客户端,经过漫长的 #BuildInPublic 之旅:“正在为发布 DataCollie 做最后准备。要处理的边缘情况太多了!”
游戏
- Anahata ASI 分享了一段视频:Pure JavaFX Lemmings Cyber-Arcade Edition|60 FPS 复刻(第 1 关:Just Dig!),这是一个纯 JavaFX 复刻的经典《Lemmings》游戏,以 60 FPS 运行。
- Artistic_Solution117 在 Reddit 上分享了一个“纯 JavaFX”的 Minecraft 演示,运行在 NetBeans 31 的 JVM 上,字节码由 Gemini 3.8 Flash 动态生成:9 个 Java 类(27K tokens),没有向磁盘写入任何
.java或.class文件——内存中 JIT 编译和类加载。更多 JavaFX 演示在 YouTube 频道上。 - Hallvard Trætteberg 分享了 RiskFX,这是一个用 JavaFX 实现的《Risk》世界征服游戏,并有一套制作 Android 版本的工作流程。它包含一个 AI 对手,以及用于强化学习的装置。“核心是我写的旧代码,但其余部分由 Claude 帮助我实现。”源码在 GitHub 上。
组件、库、工具
- Frank Delporte 发布了 Lottie4J 1.2.6 版本,这是一个在 JavaFX 中原生解析、生成和播放 Lottie 动画的库。“这是一个小更新,减少了动画启动和停止时的日志输出。感谢 David Gerber 提交合并请求。”所有信息见 Lottie4J 网站。
- Frank Delporte 宣布了 Lottie4J 的新版本,这是一个用于渲染 Lottie 动画的 Java 和 JavaFX 库。“1.2.7 版本没有带来新功能,而是完全聚焦于性能。改进包括:图像资源只解码一次,以及优化轨道遮罩。”更多内容见这篇博客文章。
- Mohd Dilshad Khan 分享了一个在 Java 应用运行时切换主题的技巧,无需重启或丢失状态。在 JavaFX 中,这归结为用
scene.getStylesheets().setAll(...)替换场景上的样式表,因此主题可以放在设计师能调整的 CSS 文件中。对于 Swing,FlatLaf 通过FlatDarkLaf.setup()和FlatLaf.updateUI()提供同样的能力。你可以在 GitHub 上找到他的项目。 - Frank Delporte 宣布了 Sheetmusic4J 的 0.0.4 和 0.0.5 版本,这是一个在 Java/JavaFX 中原生解析和渲染乐谱的库。这些版本包括新的基于 Node 的视图和 3D 飞越视图,并增加了对 LilyPond 格式的支持:“加载这样的文件并在 JavaFX 中原生渲染,无需运行 LilyPond。”它还带来了制谱改进,比如更好的连音组放置和八度谱号支持。新视图演示视频可在 YouTube 上观看。
- Frank Delporte 发布了 Sheetmusic4J 0.0.5,支持 LilyPond 导入/导出:通过统一的 ScoreFile 门面,经由解析器/解释器/汇编器流水线增加 LilyPond(.ly)导入/导出,并带来制谱改进,例如更好的连音组放置和八度谱号支持——这些建立在更早的 0.0.4 版本之上,该版本增加了可点击/可拖拽的 NodeSheetView 和 3D FlyOverSheetView。
- Libán Bande González 宣布了 Vitra,这是一个面向 JavaFX 的现代 UI 库,包含甘特图、看板、日历、图表、受 Fluent 启发的材质、玻璃表面和自定义窗口。所有控件都支持 CSS 和运行时主题切换,并且没有外部依赖。更多信息见网站。
播客、视频、书籍
- Josh Long 在一期 Spring Office Hours 播客中邀请 Andres Almiray。这是一场内容广泛、能量十足的对话,涉及桌面 Java 的未来、Electron 的痛苦、JavaFX 的优雅,以及 JReleaser——这个工具帮助 Java 项目发布版本、打包原生安装程序、生成分发包、计算签名和校验和,并在 GitHub、GitLab、Maven Central 等平台自动化发布。
- Libán Bande González 宣布了他的书《Skinning JavaFX Applications》,“一本实用的、代码优先的书,源自多年交付真实桌面商业应用的经验”,聚焦于用于构建自定义控件和皮肤的 Control-Skin 架构。书中涵盖自定义窗口边框、运行时主题切换、Fluent Design 中的 Mica 和 Acrylic 等现代设计材质,以及微交互,并主张“CSS 还不够”,不足以让 JavaFX 应用看起来像现代 Microsoft 或 JetBrains 界面。更多信息见该书网站。
- Adam Bien 在 airhacks.fm #419 中与嘉宾 Ingo Kegel 对话:“Agents Have No Runtime Insight”:讨论通过 JProfiler MCP 服务器让 AI 编码代理获得 JVM 运行时洞察,包括如何用代理循环让 jclasslib 的性能翻倍,超越 ASM 的字节码解析器,同时还涉及支配树等内存分析基础。他们还谈到 Swing 和 JavaFX 可能复兴,因为两者都随 Java 发布,而且 LLM 对它们很熟悉。
教程
- Sombriks 写了 The state of java desktop,通过一个小型待办事项应用示例比较 Swing、JavaFX、SWT 和 TamboUI,指出 jpackage 让分发 Java 桌面应用变得实用,并将 JavaFX 描述为“真正现代的那个”,具有原生属性绑定、更清晰的事件处理和 CSS 样式的场景图,最适合“真正大型的项目”。
- Libán Bande González 写了《Building a JavaFX Code Editor Control》,展示如何用 Control/Skin 架构构建代码编辑器:虚拟化行号、基于正则的语法高亮、括号匹配、多光标编辑、撤销/重做和自动补全。代码区和行号栏是两个同步的
ListView,因此横向滚动时行号保持固定。完整实现是他《Skinning JavaFX Applications》一书的一部分。 - sosuisen 发布了《JavaFX Getting Started with VS Code》,发表在他重新上线的个人网站上。这篇文章最初为 JFX Central 撰写,后来为日本读者和他的学生重写。页面可在日语和英语之间切换。Bluesky 上的公告。
杂项
- Old_Assistance7 在 Reddit 上提问如何在 JavaFX 应用中使用原生操作系统凭据存储(Windows DPAPI/Credential Manager、macOS Keychain、Linux Secret Service)安全地存储会话令牌。评论者建议将原生存储封装在“CredentialStore”抽象之后,推荐了 java-keyring 等库,并指出 Foreign Function & Memory API(JEP 454)是替代 JNA 调用原生代码的现代方案。
- @afparks 正在构建一个用于临时电力设备自动化测试记录的内部 JavaFX 工具,并附上了登录界面的视频。登录界面使用新的
StageStyle.EXTENDED实现无缝窗口控件,并使用 Lottie4J 播放动画。 - Ivan Velikanov 分享了他如何通过将聊天应用和终端迁移到 JavaFX 节省 3.5 GB RAM:在 r/JavaFX 上,一场关于 WhatsApp、Slack、VS Code 和其他几个浏览器引擎/Electron 应用的 JavaFX 版本的讨论。基于 JavaFX 的版本明显更流畅,大多数情况下使用串行 GC。WhatsApp 版本基于 whatsmeow 构建,Slack 版本和终端计划通过 fxslack.github.io 分享,该网站在发帖时仍是空的。## JFX Central
- 9 月的链接已整理到 Foojay 上的月度汇总 中。
分享此页面
- Bluesky
- Hacker News
- 电子邮件
- 链接已复制
发现错误或想补充内容?在 GitHub 上编辑此页面
[LOADING...]
作者
Frank Delporte
Frank Delporte 是 Java Champion、Java 开发者、Azul 高级技术文档工程师、博主,著有《Java Programming for Raspberry Pi - A Hands-On Guide to Electronics and IoT Projects》,并且是 Pi4J、Lottie4J、Sheetmusic4J 等项目的开源贡献者……
相关文章
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 9 月 30 日 238 次浏览
2026 年 9 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 8 月 31 日 284 次浏览
2026 年 8 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 7 月 31 日 601 次浏览
2026 年 7 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 6 月 30 日 519 次浏览
2026 年 6 月 JavaFX 链接
参与讨论
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 9 月 30 日 238 次浏览
2026 年 9 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 8 月 31 日 284 次浏览
2026 年 8 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 7 月 31 日 601 次浏览
2026 年 7 月 JavaFX 链接
JavaFX [LOADING...]
[LOADING...]Frank Delporte2026 年 6 月 30 日 519 次浏览