Scene Builder
Scene Builder — бесплатный визуальный редактор файлов FXML. Элементы перетаскивают мышью из палитры в окно, а свойства меняют в боковой панели — без ручного набора XML. Редактор сохраняет обычный файл FXML, тот же, что мы писали вручную, поэтому можно свободно переключаться между редактором и текстом.
Установка
Scene Builder поддерживает компания Gluon. Установщики для Windows, macOS и Linux лежат на странице gluonhq.com/products/scene-builder. Берите последнюю версию — она открывает файлы, написанные для JavaFX 25.
В IntelliJ IDEA укажите путь к программе в настройках: Languages & Frameworks → JavaFX → Path to SceneBuilder. После этого у файла .fxml в контекстном меню появится пункт Open In SceneBuilder.
Окно редактора
| Панель | Где | Что в ней |
|---|---|---|
| Library | Слева вверху | Палитра: Containers, Controls, Shapes и другие группы |
| Document → Hierarchy | Слева внизу | Дерево узлов, как граф сцены |
| Document → Controller | Слева внизу | Класс контроллера |
| Inspector → Properties | Справа | Текст, шрифт, стиль, CSS-классы |
| Inspector → Layout | Справа | Размеры, отступы, растягивание, ячейка GridPane |
| Inspector → Code | Справа | fx:id и обработчики событий |
В центре — само окно. Элемент из палитры перетаскивают либо прямо в окно, либо в нужное место дерева Hierarchy: в дереве проще попасть внутрь нужного контейнера.
Связь с контроллером
- Откройте
main-view.fxmlчерез File → Open. - В Document → Controller в поле Controller class впишите
com.example.notes.MainController. - Выделите кнопку и в Inspector → Code задайте
fx:id, напримерaddButton, и в поле On Action —addNote. - Меню View → Show Sample Controller Skeleton покажет заготовку класса с полями для всех
fx:id. Её удобно копировать в контроллер:
// src/main/java/com/example/notes/MainController.java — поля из заготовки
@FXML
private Button addButton;
@FXML
private Button deleteButton;Предпросмотр окна — Preview → Show Preview in Window: кнопки и поля там работают, но код контроллера не выполняется.
Что меняется в файле
Scene Builder пишет разметку по-своему. После сохранения нижний ряд кнопок выглядит так:
<!-- src/main/resources/com/example/notes/main-view.fxml — после Scene Builder -->
<HBox spacing="8.0" BorderPane.alignment="CENTER">
<children>
<Button fx:id="addButton" mnemonicParsing="false" onAction="#addNote" text="Добавить" />
<Button fx:id="deleteButton" mnemonicParsing="false" onAction="#deleteNote" text="Удалить" />
</children>
<padding>
<Insets top="12.0" />
</padding>
</HBox>Смысл тот же: явный тег <children>, числа с дробной частью и атрибут mnemonicParsing="false", который отключает подчёркивание буквы для Alt-сочетаний. Порядок атрибутов и отступы тоже меняются, поэтому в истории Git первое сохранение из Scene Builder выглядит как большая правка.
Когда что удобнее
| Задача | Удобнее |
|---|---|
| Набросать новое окно, подобрать отступы | Scene Builder |
Переименовать fx:id во многих местах, сравнить версии | Текст |
| Повторяющиеся элементы, данные из базы | Java-код в контроллере |
Частая ошибка
Свежий Scene Builder записывает в корневой тег версию своей JavaFX, например xmlns="http://javafx.com/javafx/26". Если приложение работает на JavaFX 25, при запуске появляется WARNING: Loading FXML document with JavaFX API of version 26 by JavaFX runtime of version 25.0.4. Окно откроется, но элементы, которых нет в вашей версии, загрузить не получится. Держите версию JavaFX проекта не ниже версии редактора или уберите номер из xmlns.