Пакет javafx.scene
Предоставляет основной набор базовых классов для API JavaFX Scene Graph. Дерево сцены — это структура данных в виде дерева, где каждый элемент дерева имеет ноль или одного родителя и ноль или более потомков.
Два основных класса в этом пакете:
-
Scene– Определяет сцену, подлежащую отрисовке. Она содержит переменнуюfill, которая определяет фон сцены, переменныеwidthиheight, которые определяют размер сцены, и последовательностьcontent, содержащую список «корневых»Nodes, которые нужно отрисовать на сцене. Эта последовательностьNodesявляется деревом сцены для этойScene.Sceneотрисовывается наStage, который является контейнером верхнего уровня для содержимого JavaFX. -
Node– Базовый абстрактный класс для всех узлов в дереве сцены. Каждый узел является либо «листовым» узлом без дочерних узлов, либо «ветвящимся» узлом с нулём или более дочерними узлами. Каждый узел в дереве имеет ноль или одного родителя. Только один узел в каждом дереве в дереве сцены не будет иметь родителя, что часто называется «корневым» узлом. В дереве сцены может быть несколько деревьев. Некоторые деревья могут быть частьюScene, в этом случае они подлежат отображению. Другие деревья могут не принадлежать ни к одномуScene.
Ветвящиеся узлы — это классы типа Parent или их подклассы.
Листовые узлы — это такие классы, как Rectangle, Text, ImageView, MediaView, или другие подобные листовые классы, которые не могут иметь дочерние элементы.
Узел может встречаться не более одного раза в любом месте дерева сцены. В частности, узел должен появляться не более одного раза в списке дочерних элементов Parent или в качестве обрезки Node. Подробнее об этих ограничениях см. класс Node.
Пример
Пример дерева сцены JavaFX:
package example;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
public class Example extends Application {
@Override public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 200, 150);
scene.setFill(Color.LIGHTGRAY);
Circle circle = new Circle(60, 40, 30, Color.GREEN);
Text text = new Text(10, 90, "JavaFX Scene");
text.setFill(Color.DARKRED);
Font font = new Font(20);
text.setFont(font);
root.getChildren().add(circle);
root.getChildren().add(text);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Этот пример сгенерирует следующий образ:
Система координат и преобразования
Класс Node определяет традиционную систему координат компьютерной графики «локальную», в которой ось x возрастает вправо, а ось y возрастает вниз. Конкретные классы узлов для фигур предоставляют переменные для определения геометрии и расположения фигуры в этом локальном пространстве координат. Например, Rectangle предоставляет переменные x, y, width, height, а Circle — переменные centerX, centerY и radius.
Любой Node может иметь применённые к нему преобразования. К ним относятся преобразования смещения, поворота, масштабирования или сдвига. Преобразование изменит положение, ориентацию или размер системы координат, как она отображается родительским элементом узла, который был преобразован.
Дополнительную информацию о преобразованиях см. в классе Node.
Прямоугольник охватывания
Поскольку каждый Node имеет преобразования, геометрический прямоугольник охватывания каждого узла Node может быть описан по-разному в зависимости от того, учитываются ли преобразования или нет.
Каждый Node имеет следующие свойства, определяющие эти прямоугольники охватывания:
-
boundsInLocal— определяет границыNodeв не преобразованных локальных координатах. -
boundsInParent— определяет границыNodeпосле применения всех преобразований. Он называется «boundsInParent», потому что прямоугольник будет относиться к системе координат родителя. -
layoutBounds— определяет прямоугольные границыNode, которые должны использоваться в качестве основы для вычислений макета, и могут отличаться от визуальных границ узла. Для фигур, текста и ImageView по умолчаниюlayoutBoundsвключает только геометрию фигуры.
Дополнительную информацию о прямоугольниках охватывания см. в классе Node.
CSS
Дерево сцены JavaFX предоставляет возможность форматирования узлов с использованием CSS (Cascading Style Sheets). Класс Node содержит переменные id, styleClass и style, которые используются селекторами CSS для поиска узлов, к которым необходимо применить стили. Класс Scene содержит переменную stylesheets, которая представляет собой последовательность URL-адресов, ссылающихся на файлы стилей CSS, которые должны применяться к узлам в этой сцене.
Для получения дополнительной информации о CSS, способе применения стилей CSS к узлам и доступных свойствах для форматирования, см. Руководство по CSS.
| Класс | Описание |
|---|---|
| AccessibleAction | Это перечисление описывает действия, которые может запросить вспомогательная технология, такая как экранный диктор, у графа сцены. |
| AccessibleAttribute | Это перечисление описывает атрибуты, которые может запросить вспомогательная технология, такая как экранный диктор, у графа сцены. |
| AccessibleAttribute.ToggleState | Это перечисление описывает значения для атрибута TOGGLE_STATE. |
| AccessibleRole | Это перечисление описывает доступную роль для Node. |
| AmbientLight | Свет, равномерно освещающий объект со всех сторон независимо от его положения и ориентации. |
| CacheHint | Указания по кэшированию для использования с Node.cacheHint
|
| Camera | Базовый класс для камеры, используемой для рендеринга сцены. |
| Cursor | Класс для инкапсуляции битовой карты курсора мыши. |
| DepthTest | Это перечисление определяет возможные состояния флага depthTest в узле. |
| DirectionalLight | Свет, освещающий объект из определённого направления. |
| Group | Узел Group содержит ObservableList дочерних элементов, которые рендерятся в порядке, когда этот узел рендерится. |
| ImageCursor | Настраиваемое изображение курсора мыши. |
| LightBase | Класс LightBase является базовым классом для всех объектов, представляющих источник света. |
| Node | Базовый класс для узлов графа сцены. |
| ParallelCamera | Определяет параллельную камеру для рендеринга сцены без коррекции перспективы. |
| Parent | Базовый класс для всех узлов, имеющих дочерние элементы в графе сцены. |
| PerspectiveCamera | Определяет камеру с перспективой для рендеринга сцены. |
| PointLight | Источник света, излучающий свет равномерно во всех направлениях от себя. |
| Scene | Класс JavaFX Scene является контейнером для всего содержимого в графе сцены. |
| SceneAntialiasing | Класс JavaFX SceneAntialiasing определяет уровень сглаживания, желаемый для сцены. |
| SnapshotParameters | Параметры, используемые для указания атрибутов рендеринга для снимка Node. |
| SnapshotResult | Этот класс содержит результат операции снимка. |
| SpotLight | Источник света, излучающий свет в конусе в определённом направлении от себя. |
| SubScene | Класс SubScene является контейнером для содержимого в графе сцены. |
© 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.