One thing you can do is have create a default constructor for the controller and have it store this
into a private static variable. You can then create a static getter for that variable to retrieve the controller instance. You can then either expose the @FXML
-annotated fields directly or have getter methods for them. This breaks though if you load multiple instances of the same controller, for obvious reasons.
I don't have much experience with JavaFX, though, so I can't say for sure whether this is a good/bad solution... I just know it works for simpler cases.
Edit: This answer has better solutions: Accessing FXML controller class
Basically:
FXMLLoader fxmlLoader = new FXMLLoader();
Pane p = fxmlLoader.load(getClass().getResource("foo.fxml").openStream());
FooController fooController = (FooController) fxmlLoader.getController();