Синтаксис для добавления обработчиков событий через FXML описывается Введение в FXML .Он использует символ #
вместе с соответствующим атрибутом onXXX
.Например, если у вас есть следующий контроллер:
package example;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
public class Controller {
@FXML
private void printHelloWorld(ActionEvent event) {
event.consume();
System.out.println("Hello, World!");
}
}
Тогда файл FXML может выглядеть примерно так:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.StackPane?>
<StackPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="example.Controller" prefWidth="500" prefHeight="300">
<Button text="Click me!" onAction="#printHelloWorld"/>
</StackPane>
Это можно настроить с помощью Scene Builder, щелкнув нужный узели перейдем к панели «Код» с правой стороны.Будут поля для различных свойств onXXX
, а также поле для fx:id
.