Основы JavaFX
JavaFX - это набор пакетов и API-интерфейсов для разработки программ с GUI, 3D-графикой и т.д. Графический пользовательский интерфейс, или GUI, позволяет пользователю взаимодействовать с программой, используя графические компоненты, такие как окна, кнопки, текстовые поля и т.д.
JavaFX был разработан с учетом шаблона Model-View-Controller. В двух словах, этот шаблон позволяет отделить код, который обрабатывает данные приложения, от кода пользовательского интерфейса.
Из-за этого, когда мы используем шаблон MVC, мы бы не стали смешивать код, который работает с пользовательским интерфейсом, и код, который управляет данными приложения, в одном классе. Контроллер является посредником между пользовательским интерфейсом и данными.
При работе с JavaFX модель соответствует модели данных приложения, представление - это FXML, а контроллер - это код, который определяет, что происходит, когда пользователь взаимодействует с пользовательским интерфейсом. Контроллер обрабатывает события. JavaFX не применяет шаблон MVC, но это хорошая практика, которой следует следовать.
Графический интерфейс JavaFX использует четыре класса/объекта, а именно Application, Stage, Scene и Pane, для отображения графических компонентов.
- Stage - это JavaFX-контейнер верхнего уровня для сцен, это главное окно
- Scene - для каждого этапа требуется сцена, а основой для каждой сцены является граф сцены, дерево, в котором каждый узел соответствует элементу управления пользовательского интерфейса или области сцены, например прямоугольнику. Scene - это контейнер для элементов управления JavaFX, таких как кнопки, текстовые поля, макеты и т.д.
Все приложения JavaFX имеют по крайней мере один этап и одну сцену.
Зачем нам нужны Scene и Stage? Давайте рассмотрим театральную метафору. Давайте представим, что вы смотрите пьесу. Когда мы смотрим первую сцену (Scene), занавес поднимается, а затем опускается. Ассистенты на сцене (Stage) бегают вокруг и меняют мебель и задник, а затем занавес снова поднимается. Мы можем увидеть других актеров, но сцена (Stage) все та же.
Итак, если мы вернемся к JavaFX, помните, что сцена соответствует контейнеру пользовательского интерфейса верхнего уровня, например окну, а сцена поддерживается графом сцен, который содержит узлы (Node) пользовательского интерфейса. Если вы хотите изменить то, что отображается на сцене (в окне), все, что нам нужно сделать, это изменить сцену, пользовательский интерфейс. Нам не нужно создавать новый объект Stage. На практике мы бы загрузили другой файл FXML в новую сцену, а затем вызвали stage.setScene().
Например, если бы у нас был мастер, который хотел, чтобы пользователь выполнял пошаговые действия, используя кнопки "Предыдущий" и "следующий", мы могли бы использовать одно и то же окно (этап) и просто менять сцену каждый раз, когда пользователь нажимал "Следующий" или "предыдущий". Или когда мы хотим изменить части пользовательского интерфейса в ответ на действия пользователя, нам не нужно удалять компоненты пользовательского интерфейса или делать их невидимыми и добавлять новые, мы просто переключаем сцену. По сути, эти сцены упрощают повторное использование контейнера.
Рассмотрим один из подходов к созданию графического интерфейса JavaFX
- Расширение и запуск приложения: Приложение - это класс JavaFX, который предоставляет базовые функциональные возможности для программы на JavaFX и доступен через инструкцию импорта javafx.application.Application;
- Переопределение метода start(): Приложение JavaFX запускается путем выполнения метода start(), который должен быть переопределен в производном классе приложения. Метод start() принимает параметр Stage, возвращает значение типа void, как в public void start(Stage applicationStage) {...}, и ему предшествует аннотация @Override. Как уже обсуждалось, Stage - это контейнер верхнего уровня JavaFX, который содержит все содержимое в окне и доступен с помощью инструкции import javafx.stage.Stage;
- Создайте Pane и Scene: Scene - это компонент JavaFX, содержащий все графические компоненты, которые отображаются вместе и доступны с помощью инструкции import javafx.scene.Scene;. Приложение может содержать несколько сцен, но одновременно может быть видна только одна сцена. Pane - это компонент JavaFX, который управляет макетом, т.е. положением и размером графических компонентов, и доступен с помощью инструкции import javafx.scene.layout.Pane;. Оператор pane = new Pane(); создает пустой объект Pane. Оператор scene = new Scene(pane); создает новую сцену, содержащую объект Pane;
- Создание и добавление графических компонентов в панель: TextField - это компонент графического интерфейса JavaFX, который позволяет программисту отображать строку текста и доступен с помощью инструкции import javafx.scene.control.TextField;. Оператор outputField = new TextField() создает объект TextField. Метод setText(), используемый в TextField, определяет текст, который будет отображаться. Графические компоненты добавляются в сцену путем добавления компонентов на панель сцены. Панель может содержать множество графических компонентов, которые называются дочерними. Инструкция pane.getChildren().add(TextField); добавляет объект TextField с именем outputField в список дочерних объектов панели
- Установка и отображение сцены: метод setScene() в Stage задает сцену, которая будет отображаться, как в applicationStage.setScene(Scene);. Метод setTitle() определяет текст, который будет отображаться в качестве заголовка приложения
Класс приложения и методы жизненного цикла
Приложение JavaFX является подклассом класса Application. Этот класс определяет 3 метода жизненного цикла: init(), start() и stop(), и они вызываются в следующем порядке.
Методы жизненного цикла
Метод Init() вызывается при первом запуске приложения JavaFX. Здесь мы выполняем инициализацию и устанавливаем данные по умолчанию.
Start() мы создаем пользовательский интерфейс (задаем сцены) при запуске приложения. Start ссылается на объект Stage в качестве параметра. Объект Stage предоставляется во время выполнения и является основным этапом для вашего приложения JavaFX. Start() является абстрактным методом и должен быть переопределен
Stop() когда мы закрываем приложение, запускается метод stop, и приложение завершает работу. Мы используем этот метод для завершения работы и очистки.
Приложение JavaFX запускается путем вызова метода launch(), а функция launch() вызывает функцию init(), а затем start(). Метод launch() возвращает результат при закрытии приложения, а затем вызывается метод stop().
Fx:controller сообщает среде выполнения, какой класс является контроллером для этого окна.
Макет в JavaFX упорядочивает элементы/элементы управления в сцене. Классами макета в JavaFX являются AnchorPane, FlowPane, GridPane и т.д.
GridPane - это компонент панели JavaFX, который размещает графические компоненты в двумерной сетке.
Label - это компонент JavaFX, который отображает текст, не подлежащий редактированию, и доступен с помощью инструкции import javafx.scene.control.Label;. Label обычно используются для описания или подписи других компонентов графического интерфейса пользователя.
Button - это компонент графического интерфейса JavaFX, представляющий собой помеченную кнопку, которую пользователь может нажать для взаимодействия с программой. Компонент графического интерфейса JavaFX, поддерживающий пользовательский ввод, генерирует событие действия, уведомляющее программу, когда пользователь взаимодействует с компонентом, например, при нажатии кнопки. Обработчик событий определяет, как программа должна реагировать на события действия.
Установите и определите обработчик событий: ActionEvent - это объект, который уведомляет программу о наступлении события, связанного с компонентом, например, о нажатии пользователем кнопки, и доступен с помощью инструкции import javafx.event.ActionEvent;. Обработчик событий - это объект, который определяет, как программа должна реагировать на определенные события, такие как ActionEvent, и доступен с помощью инструкции import javafx.event.EventHandler;.
Комментарии
Для того чтобы оставить свое мнение, необходимо зарегистрироваться на сайте