u/FrankCodeWriter

▲ 17 r/java_projects+1 crossposts

I've been building MelodyMatrix, a JavaFX app for musicians, and using BentoFX for the dockable panel layout. Had some visual issues I couldn't explain and some code that felt too complicated.

Invited Matt Coley (creator of BentoFX, also known for Recaf) to look at it together. Some things from the session that might be useful to others:

Scenic View - if you are not using this for JavaFX debugging you should be. Attach it to a running process and inspect the scene graph live, same as browser DevTools. Immediately showed us what was happening with a tab header rotation issue I had been guessing at.

AI-generated code and library internals - some of the code that Claude and Copilot had produced was managing widths and visibility that BentoFX already handles. It worked, but it was fragile and conflicting with the library's own logic. Removing it fixed the issue.

BentoFX pruning - when you close a panel, BentoFX removes the empty branch and reorganises the layout. If you are also tracking widths or visibility yourself in code, things conflict in ways that are annoying to debug.

We also hit what looks like a bug around divider modes when reopening a panel.

The video is about an hour, the Scenic View section starts around 16:25.

Video on YouTube - Blog with more info and links

u/FrankCodeWriter — 24 days ago
▲ 32 r/java_projects+1 crossposts

I maintain Lottie4J, a library for rendering Lottie animations in JavaFX. In the 1.1.0 release notes I had a TODO I wasn't proud of: a unit test that compares JavaFX player output against a JavaScript reference player, marked as "can not run on CI, because it requires a display output."

JavaFX 26 fixed that. The new headless platform prototype is built directly into javafx.graphics. No need for Monocle, Xvfb, or extra dependencies. Just: `-Dglass.platform=headless`.

The only real wrinkle: JavaFX 26 requires Java 24+, but Lottie4J targets Java 21. I solved it with a Maven profile that overrides the JavaFX/Java versions only for the test run, so the library artifact stays on Java 21 targets while GitHub Actions uses a Java 25 JDK with the headless flag.

The test does pixel-level comparison of rendered animation frames against pre-generated reference images from a JS player. Regression testing for visual output, running clean on every push now.

Write-up with full Maven config and GitHub Actions workflow:
https://webtechie.be/post/2026-04-20-lottie4j-unit-test-with-headless-javafx/

u/FrankCodeWriter — 25 days ago

Some side projects take a while to get to a proper release. MelodyMatrix is one of those. The app has been downloadable for quite some time thanks to jDeploy, but there was no official V1.0.0 yet. No tagged release. No moment of “okay, this is it.” Just a rolling build on every commit to the main branch...

That changed now: live, on camera, together with Steve Hannah, the creator of jDeploy.

The video is available on YouTube:
https://www.youtube.com/watch?v=_-IL7uHalIU

All info in this blog post:
https://webtechie.be/post/2026-04-16-first-release-of-melodymatrix-with-jdeploy/

reddit.com
u/FrankCodeWriter — 29 days ago