Класс Stage в JavaFX

В данной статье попытаемся разобраться с классом Stage в JavaFX. Понимание принципа работы данного класса очень важно, так как это один из главных классов, который вплотную работает с графами(контролами JavaFX). Публичный класс Stage расширяет класс Window. 

Замечание. Так как, данное слово имеет множество омонимов, то мне так и не удалось ясно представить суть значения этого слова с английского на русский, но кандидатами могут быть следующие значения: этап, стадия, ступень, платформа. Но больше всего подходит платформа, на котором, в дальнейшем, строятся различные сцены с помощью класса Scene.

public class Stage extends Window

Класс Stage в JavaFX является верхнеуровневым контейнером.  Основной Stage конструирует платформу. В приложении могут быть сконструированы дополнительные платформы на основе Stage. Объект Stage должен быть сконструирован и модифицирован на основе потока JavaFX приложения. Большинство свойств данного класса предназначены только для чтения, потому что они могут быть изменены извне базовой платформы и, следовательно, не могут быть связанными.

Стили Stage

Stage платформа может иметь один из следующих стилей, которые являются статическими свойствами класса  StageStyle:

  • StageStyle.DECORATEDStage со сплошным белым задним фоном и стилизацией платформы;
  • StageStyle.UNDECORATED — Stage со сплошным белым задним фоном и без стилизацией платформы;
  • StageStyle.TRANSPARENT — Stage с прозрачным задним фоном и без стилизации платформы;
  • StageStyle.UTILITY — Stage со сплошным белым задним фоном и с минимальной стилизацией платформы;

Стили должны быть инициализированы перед тем, как платформа может быть выведена на экран с помощью метода show().  На некоторых платформах стилизации могут быть недоступны. К примеру, на некоторых мобильных или встраиваемых устройствах. В таких случаях запросы DECORATED или UTILITY окна могут быть установлены, но стили не будут показаны.

Родитель Stage

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

Модальность

Платформа имеет один из следующих модальностей:

  • Modality.NONE — платформа, которая не блокируется никаким другим окном;
  • Modality.WINDOW_MODAL — платформа, которую блокируют входные события, распространяемые от источника ко всем окнам из его родителя к его корню. Этот корень является ближайшим предком окна без родителя;
  • Modality.APPLICATION_MODAL — платформа, которую блокируют входные события, распространяемые от того же приложения, исключая для тех которые исходят из его иерархии потомков;

Когда окно блокировано модальной платформой Stage его Z-порядок по отношению к потомкам сохраняется и он не получает никаких событий и никаких событий активации окна, но продолжает анимировать и нормально визуализировать. Необходимо заметить, что показываемая модальная платформа не обязательно блокирует его вызвавший родитель.  Метод show() возвращает вывод непосредственно и независимо от модальности платформы.  Если необходимо блокировать родитель, вызвавший платформу Stage до скрытия или закрытия платформы, то необходимо использовать showAndWait().  Модальное окно может быть инициализировано перед тем, как платформа может быть выведена(показана).

Пример использования Stage

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class HelloWorld extends Application {

    @Override public void start(Stage stage) {
        Text text = new Text(10, 40, "Hello World!");
        text.setFont(new Font(40));
        Scene scene = new Scene(new Group(text));

        stage.setTitle("Welcome to JavaFX!"); 
        stage.setScene(scene); 
        stage.sizeToScene(); 
        stage.show(); 
    }

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

 

Вам также может понравиться

Об авторе WebSofter

Web - технологии

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...