Пакет 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 есть следующие свойства, которые определяют эти прямоугольники ограничивающей области:
-
boundsInLocal– определяет пределыNodeв не преобразованных локальных координатах. -
boundsInParent– определяет пределыNodeпосле применения всех преобразований. Оно называется «boundsInParent», потому что прямоугольник будет относиться к системе координат родителя. -
layoutBounds– определяет прямоугольные пределыNode, которые должны использоваться в качестве основы для расчетов макета, и могут отличаться от визуальных пределов узла. Для фигур, текста и ImageView по умолчаниюlayoutBoundsвключает только геометрию фигуры.
Дополнительную информацию о прямоугольниках ограничивающей области см. в классе Node.
CSS
Графическое дерево JavaFX предоставляет возможность стилизации узлов с помощью CSS (каскадных таблиц стилей). Класс 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 | Параметры, используемые для указания атрибутов рендеринга для снимка узла. |
| SnapshotResult | Этот класс содержит результат операции снимка. |
| SpotLight | Источник света, излучающий свет в конусе в определенном направлении от себя. |
| SubScene | Класс SubScene является контейнером для содержимого в графическом дереве. |
| TraversalDirection | Определяет направление перемещения фокуса. |
© 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.