Создадим первую самую простейшую программу на JavaFX. Вначале определим на жестком диске каталог для хранения файлов с исходным кодом. Допустим, в моем случае это будет каталог C:/javafx.
В этом каталоге создадим файл Main.java и определим в нем следующий код:
import javafx.application.Application; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.scene.Group; import javafx.scene.text.Text; public class Main extends Application{ public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { // установка надписи Text text = new Text("Hello METANIT.COM!"); text.setLayoutY(80); // установка положения надписи по оси Y text.setLayoutX(80); // установка положения надписи по оси X Group group = new Group(text); Scene scene = new Scene(group); stage.setScene(scene); stage.setTitle("JavaFX Application"); stage.setWidth(300); stage.setHeight(250); stage.show(); } }
Вкратце разберем этот класс. Главный класс приложения JavaFX должен наследоваться от класса javafx.application.Application. Этот класс имеет один абстрактный метод, который нам нужно реализовать:
public void start(Stage stage) {}
В этот метод в качестве параметра передается объекта Stage, который представляет пользовательский интерфейс. Например, на десктопах Stage будет представлять графическое окно. При запуске приложения, когда среда JavaFX будет вызывать данный метод и передавать в него объект Stage.
Что нам нужно для создания графического интерфейса? Прежде всего нам нужны различные визуальные элементы, например, кнопки, текстовые поля, списки, изображения и так далее. JavaFX предоставляет большой набор встроенных визуальных элементов. В данном случае мы используем визуальный компонент javafx.scene.text.Text, который представляет простую текстовую надпись. При создании элемента Text мы можем передать ему выводимый текст, а также настроить его положение с помощью его методов:
Text text = new Text("Hello METANIT.COM!"); // создание надписи text.setLayoutY(80); // установка положения надписи по оси Y text.setLayoutX(80); // установка положения надписи по оси X
Все визуальные элементы, которые мы хотим отобразить в Stage, помещаются в объект javafx.scene.Scene или на сцену. Scene - это контейнер верхнего уровня для всех графических элементов. Однако напрямую в Scene объект Text мы поместить не можем. Класс Scene предусматривает установку корневого элемента или контейнера, который содержит все остальные элементы.
Таким образом, вначале элемент Text помещается в элемент Group, который представляет контейнер для группы элементов. Затем элемент Group устанавливается в качестве корневого элемента Scene. И в конце элемент Scene устанавливается для объекта Stage.
Group group = new Group(text); // создание и установка группы элементов Scene scene = new Scene(group); // создание сцены stage.setScene(scene); // установка сцены для объекта Stage
В конце метода start мы можем настроить объект Stage, например, задать заголовок окна, а также его размеры:
stage.setTitle("JavaFX Application"); // установка заголовка окна stage.setWidth(300); // установка ширины окна stage.setHeight(250); // установка длины окна stage.show(); // отображаем окно на экране устройства
С помощью метода show объект Stage отображается на экране устройства.
Но класс Main, как и всякий главный класс приложения Java, начинает свою работу с метода main. И в методе, чтобы запустить само приложение JavaFX, представленное классом
Application, вызывается метод launch()
:
public static void main(String[] args) { launch(args); }
Метод launch собственно и запускает приложение JavaFX. После этого вызывается метод start и окно приложения будет отображаться на экране.
Теперь скомпилируем и запустим приложение. В прошлой теме мы рассматривали SDK и модули JavaFX. В моем случае JavaFX SDK был распакован в папку C:\javafx-sdk-17.0.0.1, поэтому модули располагаются в папке C:\javafx-sdk-17.0.0.1\lib. Далее мы будем использовать это расположение для компиляции и запуска приложения.
Вначале с помощью команды cd перейдем в командной строке/терминале к каталоге, где расположен файл с исходным кодом. Затем скомпилируем приложение с помощью команды
javac --module-path C:\javafx-sdk-17.0.0.1\lib --add-modules=javafx.controls Main.java
Для компиляции используется стандартный компилятор Java - javac. Ему передается параметр --module-path,
который указывает на расположение модулей. В каждом конкретном случае в зависимости от того, где расположен SDK, этот путь может отличаться. Кроме того,
указывается параметр add-modules, который указывает на используемые модули. В данном случае применяется модуль
javafx.controls
, который содержит ссылки на другие модули.
Далее запустим скомпилированное приложение с помощью команды
java --module-path C:\javafx-sdk-17.0.0.1\lib --add-modules=javafx.controls Main
В итоге нам отобразится следующее окно: