04 JavaFX Scene (Сцена )
The JavaFX Scene object is the root of the JavaFX Scene graph. In other words, the JavaFX Scene contains all the visual JavaFX GUI components inside it. A JavaFX Scene is represented by the class javafx.scene.Scene
. A Scene
object has to be set on a JavaFX Stage to be visible. In this JavaFX Scene
tutorial I will show you how to create a Scene
object and add GUI components to it.
Create Scene
You create a JavaFX Scene
object via its constructor. As parameter you must pass the root JavaFX GUI component that is to act as the root view to be displayed inside the Scene
. Here is an example of creating a JavaFX Scene
object:
VBox vBox = new VBox(); Scene scene = new Scene(vBox);
Set Scene on Stage
In order to make a JavaFX Scene
visible, it must be set on a JavaFX Stage
. Here is an example of setting a JavaFX Scene
on a Stage
:
VBox vBox = new VBox(new Label("A JavaFX Label")); Scene scene = new Scene(vBox); Stage stage = new Stage(); stage.setScene(scene);
A JavaFX Scene
can be attached to only a single Stage
at a time, and Stage
can also only display one Scene
at a time.
The Scene Graph
As mentioned in the JavaFX Overview, the scene graph consists of all the nodes which are attached to a given JavaFX Scene
object. Each Scene
object has its own scene graph.
The scene graph has a single root node. Other nodes can be attached to the root node in a tree-like data structure (a tree is a kind of graph).
Scene Mouse Cursor
It is possible to set the mouse cursor of a JavaFX Scene
. The mouse cursor is the little icon that is being displayed at the location of the mouse cursor (pointer). You set the mouse cursor of a Scene
via the setCursor()
method. Here is an example of setting the mouse cursor of a JavaFX Scene
:
scene.setCursor(Cursor.OPEN_HAND);
The javafx.scene.Cursor
class contains a lot of constants you can use to specify which mouse cursor you want to display. Some of these constants are:
- Cursor.OPEN_HAND
- Cursor.CLOSED_HAND
- Cursor.CROSSHAIR
- Cursor.DEFAULT
- Cursor.HAND
- Cursor.WAIT
- Cursor.H_RESIZE
- Cursor.V_RESIZE
- Cursor.MOVE
- Cursor.TEXT
There are a few more. Just play with the constants found in the Cursor
class and see for yourself.