Provides the core set of base classes for the JavaFX Scene Graph API. A scene graph is a tree-like data structure, where each item in the tree has zero or one parent and zero or more children.

The two primary classes in this package are:

Branch nodes are of type {@link javafx.scene.Parent Parent} or subclasses thereof.

Leaf nodes are classes such as {@link javafx.scene.shape.Rectangle}, {@link javafx.scene.text.Text}, {@link javafx.scene.image.ImageView}, {@link javafx.scene.media.MediaView}, or other such leaf classes which cannot have children.

A node may occur at most once anywhere in the scene graph. Specifically, a node must appear no more than once in the children list of a {@link javafx.scene.Parent Parent} or as the clip of a {@link javafx.scene.Node Node}. See the {@link javafx.scene.Node Node} class for more details on these restrictions.

Example

An example JavaFX scene graph is as follows:

The above example will generate the following image:

Coordinate System and Transformations

The {@code Node} class defines a traditional computer graphics "local" coordinate system in which the {@code x} axis increases to the right and the {@code y} axis increases downwards. The concrete node classes for shapes provide variables for defining the geometry and location of the shape within this local coordinate space. For example, {@link javafx.scene.shape.Rectangle} provides {@code x}, {@code y}, {@code width}, {@code height} variables while {@link javafx.scene.shape.Circle} provides {@code centerX}, {@code centerY}, and {@code radius}.

Any {@code Node} can have transformations applied to it. These include translation, rotation, scaling, or shearing transformations. A transformation will change the position, orientation, or size of the coordinate system as viewed from the parent of the node that has been transformed.

See the {@link javafx.scene.Node Node} class for more information on transformations.

Bounding Rectangle

Since every {@code Node} has transformations, every Node's geometric bounding rectangle can be described differently depending on whether transformations are accounted for or not.

Each {@code Node} has the following properties which specifies these bounding rectangles:

See the {@link javafx.scene.Node Node} class for more information on bounding rectangles.

CSS

The JavaFX Scene Graph provides the facility to style nodes using CSS (Cascading Style Sheets). The {@link javafx.scene.Node Node} class contains {@code id}, {@code styleClass}, and {@code style} variables are used by CSS selectors to find nodes to which styles should be applied. The {@link javafx.scene.Scene Scene} class contains the {@code stylesheets} variable which is a sequence of URLs that reference CSS style sheets that are to be applied to the nodes within that scene.

For further information about CSS, how to apply CSS styles to nodes, and what properties are available for styling, see the CSS Reference Guide.