You can also annotated handlers for button actions directly without having to explicitly call ...setOnAction(...)
methods. This is a little easier and removes a lot of boilerplate code that was required in Java AWT/Swing for managing events (such as you have).
The tutorials in Oracle are pretty good at explaining this, but as a simple example, you just need to add the onAction="#handlingMethod"
as an attribute to the button and then add a corresponding @FXML public void handlingMethod(ActionEvent evt) {....}
to the controller. For example:
FXML
<Button onAction="#doATask" text="Do A Tas" />
Controller
@FXML
public void doATask(ActionEvent evt) {....}
As mentioned above you need to make sure that you have the controller set for the FXML (declaring it in the FXML is the easiest for you at this point, although you can set it programatically if you need to). With this method, you don't even necessarily need a reference to the Button object to work with it, which helps keeps the code a a little cleaner.
It really is that simple, which is one reason why I like JavaFX bounds above Swing or AWT development.
Good luck.