Это руководство ознакомит с основными понятиями JavaFX, примерами кода, которые вы можете использовать в качестве шаблона для своих собственных первых приложений.
Класс приложения
Приложение JavaFX нуждается в основном классе запуска. Этот класс должен расширять класс javafx.application.Application, который является стандартным в Java начиная с 8 версии.
Вот пример подкласса:
package com.jenkov.javafx.helloworld;
import javafx.application.Application;
public class MyFxApp extends Application {
}
Реализация start()
Все подклассы класса JavaFXApplication должны реализовывать абстрактный метод start() класса Application (или быть абстрактным его подклассом).
Метод вызывается при запуске приложения:
package com.jenkov.javafx.helloworld;
import javafx.application.Application;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
primaryStage.show();
}
}
Метод start() принимает один параметр типа Stage. На этапе отображаются все визуальные части приложения. Объект Stage создается для вас во время выполнения JavaFX.
Приведенный выше пример устанавливает заголовок для объекта stage, а затем вызывает show() для него. Это сделает приложение видимым в окне с заголовком, видимым в верхней панели окна.
Если вы не вызываете show() на объекте stage, ничего не видно. Окно не открывается. Если ваше приложение не становится видимым при запуске, проверьте, не забыли ли вы вызвать метод Stage show() изнутри start().
Добавление метода main()
На самом деле вы можете запустить приложение без метода main(). Но если хотите передать параметры командной строки в приложение, вам нужно добавить его:
package com.jenkov.javafx.helloworld;
import javafx.application.Application;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Как видите, метод main() вызывает статический метод launch() с параметрами командной строки. Метод launch() — это статический метод, расположенный в классе Application. Он запускает среду выполнения JavaFX и ваше приложение.
Метод launch() определит, из какого класса он вызывается, поэтому не нужно явно указывать это.
Вот скриншот окна, открываемого в результате запуска вышеуказанного приложения:

Добавление Scene
Предыдущие примеры JavaFX только открывают окно, но внутри этого окна ничего не отображается. Чтобы отобразить что-то внутри окна приложения JavaFX, вы должны добавить Scene к объекту Stage. Это делается внутри метода start().
Все компоненты, которые должны отображаться в приложении, должны находиться внутри сцены. Названия «Scene» и «Stage» вдохновлены театром. Stage может отображать несколько scene, как в театральной постановке. Аналогичным образом, компьютерная игра может иметь сцену меню, игровую сцену, сцену рекордов и т. д.
Вот пример того, как добавить объект Scene в рабочую область вместе с простой меткой:
package com.jenkov.javafx.helloworld;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.stage.Stage;
public class MyFxApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("My First JavaFX App");
Label label = new Label("Hello World, JavaFX !");
Scene scene = new Scene(label, 400, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Три строки были добавлены к этому примеру. Сначала создается объект Label. Затем создается объект сцены, передавая метку как параметр вместе с двумя параметрами, представляющими ширину и высоту ее.
Первым параметром конструктора Scene является корневой элемент. Граф сцены — это графоподобная объектная структура, содержащая все визуальные компоненты, которые должны отображаться в приложении — например, компоненты GUI.
Параметры width и height устанавливают ширину и высоту окна JavaFX, когда оно открывается, но размер окна может быть изменен пользователем.
Вот как выглядит открытое окно с добавленными Scene и Label:

