Поиск…


Вступление

JavaFX Scene Builder - это инструмент визуального макета, который позволяет пользователям быстро создавать пользовательские интерфейсы приложений JavaFX без кодирования. Он используется для генерации файлов FXML.

замечания

JavaFX Scene Builder - это инструмент визуального макета, который позволяет пользователям быстро создавать пользовательские интерфейсы приложений JavaFX без кодирования. Пользователи могут перетаскивать компоненты пользовательского интерфейса в рабочую область, изменять их свойства, применять таблицы стилей, а код FXML для макета, который они создают, автоматически генерируется в фоновом режиме. Результатом является файл FXML, который затем может быть объединен с проектом Java, привязывая интерфейс к логике приложения.

С точки зрения контроллера модели (MVC):

  • Файл FXML, содержащий описание пользовательского интерфейса, представляет собой представление.
  • Контроллер является классом Java, опционально реализующим класс Initializable, который объявляется контроллером для файла FXML.
  • Модель состоит из объектов домена, определенных на стороне Java, которые могут быть подключены к представлению через контроллер.

Установка компоновщика сцен

  1. Загрузите самую последнюю версию Scene Builder с сайта Gluon, выбрав установщик для своей платформы или исполняемый банку.

  2. С загруженным установщиком дважды щелкните, чтобы установить Scene Builder в вашей системе. Включена обновленная JRE.

  3. Дважды щелкните значок «Сценарий», чтобы запустить его как автономное приложение.

  4. Интеграция с IDE

    Хотя Scene Builder является автономным приложением, он создает файлы FXML, которые интегрированы с проектом Java SE. При создании этого проекта в среде IDE удобно включать ссылку на путь создания сценария, поэтому файлы FXML можно редактировать.

    • NetBeans: в Windows перейдите в NetBeans-> Tools-> Options-> Java-> JavaFX. В Mac OS X перейдите в NetBeans-> Preferences-> Java-> JavaFX. Укажите путь для дома сценаристов. Путь создания сцены - NetBeans
    • IntelliJ: В Windows перейдите в IntelliJ-> Settings-> Languages ​​& Frameworks-> JavaFX. В Mac OS X перейдите в IntelliJ-> Preferences-> Languages ​​& Frameworks-> JavaFX. Укажите путь для дома сценаристов. Путь создания сцены - IntelliJ
    • Eclipse: В Windows перейдите в Eclipse-> Window-> Preferences-> JavaFX. В Mac OS X перейдите в Eclipse-> Preferences-> JavaFX. Укажите путь для дома сценаристов. Путь создания сцены - Eclipse

Немного истории

Проект Scene Builder был создан с использованием JavaFX от Oracle и является открытым исходным кодом в проекте OpenJFX.

Oracle предоставил двоичные файлы, вплоть до Scene Builder v 2.0, включая только функции JavaFX до выпуска Java SE 8u40, поэтому новые функции, такие как элементы управления Spinner , не включены.

Gluon взял на себя дистрибуцию бинарных выпусков, и обновленную версию Scene Builder 8+ можно загрузить для каждой платформы отсюда .

Он включает в себя последние изменения в JavaFX, а также последние улучшения и исправления ошибок.

Проект с открытым исходным кодом можно найти здесь, где могут быть созданы проблемы, запросы функций и запросы на тягу.

Оставшиеся двоичные файлы Oracle по-прежнему можно загрузить здесь .

Учебники

Учебники по сценариям можно найти здесь:

Учебники FXML можно найти здесь.

Пользовательские элементы управления

Gluon полностью задокументировал новую функцию, которая позволяет импортировать сторонние банки с настраиваемыми элементами управления, используя Менеджер библиотек (доступный с момента создания Scene Builder 8.2.0).

Менеджер библиотеки

Вопросы

Связанный тег: SceneBuilder

Основной проект JavaFX с использованием FXML

Это базовый проект, который использует FXML, созданный с помощью приложения NetBeans (New Project -> JavaFX -> JavaFX FXML Application). Он содержит всего три файла:

Основной класс приложения

package org.stackoverflow;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class BasicApplication extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("BasicFXML.fxml"));

        Scene scene = new Scene(root);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Файл FXML

<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="org.stackoverflow.BasicFXMLController">
    <children>
        <Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
        <Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
    </children>
</AnchorPane>

контроллер

package org.stackoverflow;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;

public class BasicFXMLController {

    @FXML
    private Label label;

    public void initialize() {
        // TODO
    }   

    @FXML
    private void handleButtonAction(ActionEvent event) {
        label.setText("Hello World!");
    }

}

Бежать

Создание и запуск проекта должно отображать небольшое окно с кнопкой:

Запустить проект

Как это устроено

Вкратце, в основном классе Application, FXMLLoader будет загружать basicFXML.fxml из jar / classpath, как определено FXMLLoader.load(getClass().getResource("BasicFXML.fxml")) .

При загрузке basicFXML.fxml загрузчик найдет имя класса контроллера, как определено fx:controller="org.stackoverflow.BasicFXMLController" в FXML.

Затем загрузчик создаст экземпляр этого класса, в котором он попытается внедрить все объекты с fx:id в FXML и помечен аннотацией @FXML в классе контроллера.

В этом примере FXMLLoader создаст метку на основе <Label ... fx:id="label"/> , и она @FXML private Label label; экземпляр метки в @FXML private Label label; ,

Наконец, когда весь FXML загружен, FXMLLoader вызовет метод initialize контроллера, и будет выполнен код, который регистрирует обработчик действий с помощью кнопки.

редактирование

Хотя файл FXML можно редактировать в среде IDE, это не рекомендуется, так как среда IDE обеспечивает только базовую проверку синтаксиса и автозаполнение, но не визуальное руководство.

Лучшим подходом является открытие файла FXML с помощью Scene Builder, где все изменения будут сохранены в файле.

Scene Builder можно запустить, чтобы открыть файл: Значок «Сценарий»

Или файл можно открыть с помощью Scene Builder непосредственно из среды IDE:

  • Из NetBeans на вкладке проекта дважды щелкните файл или щелкните правой кнопкой мыши и выберите « Open .
  • Из IntelliJ на вкладке проекта щелкните правой кнопкой мыши файл и выберите « Open In Scene Builder .
  • Из Eclipse на вкладке проекта щелкните правой кнопкой мыши файл и выберите « Open with Scene Builder .

Редактировать файл с помощью Scene Builder

Если Scene Builder установлен правильно и его путь добавлен в среду IDE (см. Примечания ниже), он откроет файл:

FXML отредактирован с помощью Scene Builder

Изменения могут быть сделаны путем перетаскивания новых контейнеров или новых элементов управления из левых панелей, а свойства и значения макета можно изменить на правых панелях.

Обратите внимание, что одним из тегов id, который позволяет вводить FXML в код Java, является fx:id . Его можно установить в панели « Code :

Установка fx: id

После внесения изменений сохраните файл (Scene Builder -> File -> Save). Если при редактировании файла будут внесены изменения, отредактировав файл из среды IDE, они будут обновлены в Scene Builder.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow