Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

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: в дереве проще попасть внутрь нужного контейнера.

Связь с контроллером

  1. Откройте main-view.fxml через File → Open.
  2. В Document → Controller в поле Controller class впишите com.example.notes.MainController.
  3. Выделите кнопку и в Inspector → Code задайте fx:id, например addButton, и в поле On Action — addNote.
  4. Меню 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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.