FXML can describe only static user interfaces; for any UI changes, you'll need to use Java code or prepare a separate FXML.
Also, debugging FXML loading is tricky as it works through reflection and you need to be very careful with the names of @FXML variables.
For the same reason, refactoring of the code that uses FXML may miss text constants inside FXML. Some IDEs (for example, the latest versions of NetBeans) may help with that.