Spec-Zone.ru › OpenJavaFX 17

Класс Application

java.lang.Object
javafx.application.Application
Прямые известные подклассы:
Preloader
public abstract class Application
extends Object
Класс Application, от которого наследуются JavaFX-приложения.

Жизненный цикл

Точка входа для JavaFX-приложений — класс Application. При запуске приложения среда выполнения JavaFX выполняет следующие действия в указанном порядке:

  1. Запускает среду выполнения JavaFX, если она еще не запущена (см. Platform.startup(Runnable) для получения дополнительной информации)
  2. Создаёт экземпляр указанного класса Application
  3. Вызывает метод init()
  4. Вызывает метод start(javafx.stage.Stage)
  5. Ожидает завершения работы приложения, что происходит при наступлении одного из следующих условий:
    • приложение вызывает Platform.exit()
    • последнее окно закрыто и атрибут implicitExit объекта Platform имеет значение true
  6. Вызывает метод stop()

Обратите внимание, что метод start является абстрактным и должен быть переопределён. Методы init и stop имеют конкретные реализации, которые ничего не делают.

Подкласс Application должен быть объявлен public и иметь public конструктор без аргументов.

Вызов Platform.exit() — предпочтительный способ явного завершения JavaFX-приложения. Прямой вызов System.exit(int) является допустимой альтернативой, но не позволяет методу Application stop() выполниться.

JavaFX-приложение не должно пытаться использовать JavaFX после завершения инструментария FX или из ShutdownHook, то есть после возвращения метода stop() или вызова System.exit(int).

Примечание: Классы JavaFX должны загружаться из набора модулей с именами javafx.* в пути модуля. Загрузка классов JavaFX из пути класса не поддерживается. См. Platform.startup для получения дополнительной информации.

Развёртывание приложения как модуля

Если подкласс Application находится в именованном модуле, то этот класс должен быть доступен модулю javafx.graphics. В противном случае при запуске приложения будет выброшено исключение. Это означает, что помимо объявления самого класса public, модуль должен export (или open) содержащий пакет по крайней мере модулю javafx.graphics.

Например, если com.foo.MyApplication находится в модуле foo.app, то модуль module-info.java может выглядеть так:

module foo.app {
    exports com.foo to javafx.graphics;
}

Параметры

Параметры приложения доступны, вызвав метод getParameters() из метода init() или в любое время после вызова метода init.

Потоки

JavaFX создаёт поток приложения для выполнения метода запуска приложения, обработки событий ввода и выполнения анимационных временных линий. Создание объектов JavaFX Scene и Stage, а также изменения операций с деревом сцены для живых объектов (объектов, уже присоединённых к сцене) должны выполняться в потоке JavaFX приложения.

Загрузчик Java загружает и инициализирует указанный класс Application в потоке JavaFX приложения. Если в классе Application нет метода main или если метод main вызывает Application.launch(), то экземпляр Application создаётся в потоке JavaFX приложения.

Метод init вызывается в потоке загрузчика, а не в потоке JavaFX приложения. Это означает, что приложение не должно создавать объект Scene или Stage в методе init. Приложение может создавать другие объекты JavaFX в методе init.

Все необработанные исключения в потоке JavaFX приложения, возникающие во время обработки событий, выполнения анимационных временных линий или любого другого кода, пересылаются обработчику необработанных исключений потока uncaught exception handler.

Пример

Следующий пример продемонстрирует простое JavaFX-приложение.


import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;

public class MyApp extends Application {
    public void start(Stage stage) {
        Circle circ = new Circle(40, 40, 30);
        Group root = new Group(circ);
        Scene scene = new Scene(root, 400, 300);

        stage.setTitle("My JavaFX Application");
        stage.setScene(scene);
        stage.show();
    }
}
 

Вышеприведённый пример произведёт следующее:

A black circle in the top left
 corner of scene

С момента:
JavaFX 2.0
См. также:
Platform

Краткое описание вложенных классов

Вложенные классы
Модификатор и тип Класс Описание
static class  Application.Parameters
Содержит набор параметров для приложения.

Краткое описание полей

Поля
Модификатор и тип Поле Описание
static String STYLESHEET_CASPIAN
Константа для пользовательского стиля CSS для темы "Caspian".
static String STYLESHEET_MODENA
Константа для пользовательского стиля CSS для темы "Modena".

Краткое описание конструкторов

Конструкторы
Конструктор Описание
Application()
Создаёт новый экземпляр Application.

Краткое описание методов

Модификатор и тип Метод Описание
HostServices getHostServices()
Получает поставщик HostServices для этого приложения.
Application.Parameters getParameters()
Получает параметры для этого приложения, включая любые аргументы, переданные в командной строке.
static String getUserAgentStylesheet()
Получает пользовательский стиль CSS, используемый во всём приложении.
void init()
Метод инициализации приложения.
static void launch​(Class<? extends Application> appClass, String... args)
Запуск автономного приложения.
static void launch​(String... args)
Запуск автономного приложения.
void notifyPreloader​(Preloader.PreloaderNotification info)
Уведомляет предзагрузчик об уведомлении, сгенерированном приложением.
static void setUserAgentStylesheet​(String url)
Устанавливает пользовательский стиль CSS, используемый во всём приложении.
abstract void start​(Stage primaryStage)
Основная точка входа для всех приложений JavaFX.
void stop()
Этот метод вызывается, когда приложение должно завершиться, и предоставляет удобное место для подготовки к выходу приложения и уничтожения ресурсов.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание полей

STYLESHEET_CASPIAN

public static final String STYLESHEET_CASPIAN
Константа для пользовательского агента таблицы стилей для темы "Caspian". Caspian — это тема, которая поставлялась по умолчанию в JavaFX 2.x.
С:
JavaFX 8.0
См. также:
Значения константных полей

STYLESHEET_MODENA

public static final String STYLESHEET_MODENA
Константа для пользовательского агента таблицы стилей для темы "Modena". Modena — это тема по умолчанию для JavaFX 8.x.
С:
JavaFX 8.0
См. также:
Значения константных полей

Подробное описание конструкторов

Application

public Application()
Создаёт новый Application экземпляр.

Подробное описание методов

launch

public static void launch(Class<? extends Application> appClass, String... args)
Запуск автономного приложения. Этот метод обычно вызывается из метода main. Он не должен вызываться более одного раза, иначе будет выброшено исключение.

Метод launch не возвращает значение, пока приложение не завершит работу, либо вызовом Platform.exit(), либо закрытием всех окон приложения. Класс, указанный аргументом appClass, должен быть публичным подклассом Application с публичным конструктором без аргументов в пакете, который exported (или open) по крайней мере для модуля javafx.graphics, иначе будет выброшено исключение RuntimeException.

Типичное использование:

     public static void main(String[] args) {
         Application.launch(MyApp.class, args);
     }
 
где MyApp — подкласс Application.
Параметры:
appClass — класс приложения, который создаётся и выполняется загрузчиком.
args — аргументы командной строки, передаваемые приложению. Приложение может получить эти параметры, используя метод getParameters().
Исключения:
IllegalStateException — если этот метод вызывается более одного раза.
IllegalStateException — если этот метод вызывается из потока приложения JavaFX.
IllegalArgumentException — если appClass не является подклассом Application.
RuntimeException — если возникла ошибка при запуске среды выполнения JavaFX, или если класс приложения не может быть создан (например, если класс не является публичным или находится не в экспортированном пакете), или если в конструкторе, методе init, методе start или методе stop приложения брошено исключение или ошибка.

launch

public static void launch(String... args)
Запуск автономного приложения. Этот метод обычно вызывается из метода main. Он не должен вызываться более одного раза, иначе будет выброшено исключение. Это эквивалентно launch(TheClass.class, args), где TheClass — класс, непосредственно окружающий метод, который вызвал launch. Он должен быть публичным подклассом Application с публичным конструктором без аргументов в пакете, который exported (или open) по крайней мере для модуля javafx.graphics, иначе будет выброшено исключение RuntimeException.

Метод launch не возвращает значение, пока приложение не завершит работу, либо вызовом Platform.exit(), либо закрытием всех окон приложения.

Типичное использование:

     public static void main(String[] args) {
         Application.launch(args);
     }
 
Параметры:
args — аргументы командной строки, передаваемые приложению. Приложение может получить эти параметры, используя метод getParameters().
Исключения:
IllegalStateException — если этот метод вызывается более одного раза.
IllegalStateException — если этот метод вызывается из потока приложения JavaFX.
RuntimeException — если возникла ошибка при запуске среды выполнения JavaFX, или если класс приложения не может быть создан (например, если класс не является публичным или находится не в экспортированном пакете), или если в конструкторе, методе init, методе start или методе stop приложения брошено исключение или ошибка.

init

public void init() throws Exception
Метод инициализации приложения. Этот метод вызывается сразу после загрузки и создания класса Application. Приложение может переопределить этот метод для выполнения инициализации перед фактическим запуском приложения.

Реализация этого метода, предоставляемая классом Application, ничего не делает.

ПРИМЕЧАНИЕ: Этот метод не вызывается в потоке JavaFX Application. Приложение не должно создавать Scene или Stage в этом методе. Приложение может создать другие объекты JavaFX в этом методе.

Исключения:
Exception — если что-то пошло не так

start

public abstract void start(Stage primaryStage) throws Exception
Основная точка входа для всех приложений JavaFX. Метод start вызывается после возвращения метода init и после того, как система готова к запуску приложения.

ПРИМЕЧАНИЕ: Этот метод вызывается в потоке JavaFX Application.

Параметры:
primaryStage — главная сцена для этого приложения, на которую можно установить сцену приложения. Приложения могут создавать другие сцены, если это необходимо, но они не будут главными.
Исключения:
Exception — если что-то пошло не так

stop

public void stop() throws Exception
Этот метод вызывается при завершении работы приложения и предоставляет удобное место для подготовки к выходу приложения и уничтожения ресурсов.

Реализация этого метода, предоставляемая классом Application, ничего не делает.

ПРИМЕЧАНИЕ: Этот метод вызывается в потоке JavaFX Application.

Исключения:
Exception — если что-то пошло не так

getHostServices

public final HostServices getHostServices()
Получает поставщика HostServices для этого приложения. Это предоставляет возможность получить базу кода и базу документов для этого приложения и отобразить веб-страницу в браузере.
Возвращает:
поставщик HostServices

getParameters

public final Application.Parameters getParameters()
Возвращает параметры для этого приложения, включая любые аргументы, переданные в командной строке.

ПРИМЕЧАНИЕ: этот метод не должен вызываться из конструктора Application, так как он вернёт null. Его можно вызвать в методе init() или в любое время после него.

Возвращает:
параметры для этого приложения или null, если вызван из конструктора.

notifyPreloader

public final void notifyPreloader(Preloader.PreloaderNotification info)
Уведомляет загрузчик о уведомлении, сгенерированном приложением. Код приложения вызывает этот метод с PreloaderNotification, который передаётся в метод Preloader.handleApplicationNotification. Это в первую очередь полезно в тех случаях, когда приложение хочет, чтобы загрузчик показывал прогресс во время длительной стадии инициализации приложения.

ПРИМЕЧАНИЕ: уведомление будет передано только методу handleApplicationNotification() загрузчика; это означает, например, что если этот метод вызывается с ProgressNotification, это уведомление не будет передано в метод Preloader.handleProgressNotification.

Параметры:
info — уведомление загрузчика, сгенерированное приложением

getUserAgentStylesheet

public static String getUserAgentStylesheet()
Получает таблицу стилей пользовательского агента, используемую во всем приложении. Она используется для предоставления стандартной стилизации для всех элементов пользовательского интерфейса и других узлов. Значение null означает, что используется платформа по умолчанию.

ПРИМЕЧАНИЕ: Этот метод должен вызываться в потоке JavaFX Application.

Возвращает:
URL таблицы стилей в виде строки.
С:
JavaFX 8.0

setUserAgentStylesheet

public static void setUserAgentStylesheet(String url)
Устанавливает пользовательский стилизованный документ, используемый во всём приложении. Он используется для предоставления стилей по умолчанию для всех элементов управления пользовательского интерфейса и других узлов. Каждая версия JavaFX может иметь новое значение по умолчанию для этого, поэтому, если вам нужно гарантировать согласованность, вам нужно будет вызвать этот метод и выбрать значение по умолчанию для вашего приложения. Значение null восстановит стили по умолчанию платформы. Этот параметр также может быть задан в командной строке с помощью -Djavafx.userAgentStylesheetUrl=[URL] Установка его в командной строке переопределяет всё, что задано с помощью этого метода в коде.

URL — это иерархический URI вида [схема:][//авторитет][путь]. Если URL не содержит компонента [схема:], URL считается только компонентом [путь]. Любой начальный символ '/' в [пути] игнорируется, и [путь] обрабатывается как путь, относительный к корню пути класса приложения.

Кроме обработчиков протоколов, зарегистрированных для приложения, поддерживается схема URL «data» из RFC 2397. Если URL использует схему «data», а тип MIME пустой, «text/plain» или «text/css», содержимое будет интерпретироваться как файл CSS. Если тип MIME — «application/octet-stream», содержимое будет интерпретироваться как двоичный файл CSS (см. Stylesheet.convertToBinary(File, File)).

ПРИМЕЧАНИЕ: этот метод должен вызываться в потоке приложения JavaFX.

Parameters:
url - URL стилизованного документа в виде строки.
Since:
JavaFX 8.0

© 2008, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from JavaFX API Documentation.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Java, JavaFX and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API