JavaFX’s user interfaces are almost completely event-driven. Most people are familiar with action events, key events and mouse events, but almost every complex update…
Core JavaFX
How to force refresh the Scene in JavaFX (and 3 reasons you don’t have to)
When I first started programming with JavaFX, updating the user interface was a constant frustration. An awkward TableView that wouldn’t refresh, or the UI…
How to check your JavaFX version
When I wrote my last article about ways to avoid runtime components errors,it got me thinking: if you want to test the version of…
How to Fix JavaFX’s “Runtime Components are Missing” Error
If you’re not familiar with Java modules, you’re almost guaranteed to get hit with an error: “Runtime Components Are Missing”. It can be a…
3 easy ways to get the current Stage in a JavaFX controller
JavaFX provides a huge amount of internal support for managing the scene graph. That includes navigating from nodes, as well as events, to the…
‘Location is not set?’ 3 easy steps to get your resources in the right place
One common frustration with the way JavaFX loads Views with the FXMLLoader is that it does not make debugging easy! “Location is not set”…
How to use the FXMLLoader and tips for debugging it
The FXMLLoader object is a mixed-function class with the responsibility to parse FXML content (as XML), build the Scene Graph and initialise the Controller…
Complete Guide To FXML Dependency Injection and Controller Initialisation
Dependency injection looks hard, but really really isn’t. In fact, JavaFX has some dependency injection baked into it if you know how to use…
How To Effortlessly Setup JavaFX With Maven (+ debugging tips!) in IntelliJ
if there’s one thing that can skyrocket your application from development to production-class it’s properly managed dependencies. And the great news is it’s super-easy.…
CellFactory: Complete Customization of JavaFX TableView
If you’re designing a rich user interface, printing out the basic information your user needs as text might be efficient. But, it may not…