Scene – контейнер для графического содержимого внутри окна Stage. Сцена определяет область отображения и хранит граф сцены (иерархию узлов интерфейса).
Корневой узел: при создании Scene указывается корневой элемент (Root Node) – с него начинается древо UI-элементов. Размеры сцены (ширина, высота) можно задать явно или подстраивать под содержимое/окно.
Замена сцены: в каждом Stage может быть только одна активная Scene одновременно. Можно динамически менять сцену Stage (через stage.setScene(...)), чтобы переключать интерфейс в окне.
Пояснение
Если Stage – это пустое окно, то Scene – это то, что наполняет окно содержимым. При создании сцены вы обычно пишете: Scene scene = new Scene(rootNode, width, height);, где rootNode – корневой узел (например, некий Layout-панель типа VBox или AnchorPane, содержащая остальные элементы). Ширину и высоту можно указать, либо вообще вызвать конструктор new Scene(rootNode), тогда размер сцены подстроится под содержимое или размеры окна.
Сцена знает о своем корневом узле и через него – обо всех остальных узлах интерфейса. Граф сцены (scene graph) – это структура данных (дерево), включающая все компоненты UI, которые должны отображаться в данной сцене. Пока узел находится в графе сцены, он видим (если не скрыт явно) и интерактивен; удаляем узел из графа – он пропадает с экрана.
Размещать элементы на сцене напрямую нельзя – всегда нужен корневой контейнер. Чаще всего корневой узел – это панель компоновки (Layout Pane), например BorderPane, VBox, StackPane или др., которая уже внутри себя содержит дочерние узлы (кнопки, текстовые поля и т.д.). Такая вложенная структура формирует интерфейс.
Вы можете в любой момент заменить сцену у Stage: например, primaryStage.setScene(otherScene). Это удобно, когда нужно кардинально сменить интерфейс в окне – вместо удаления/создания множества элементов можно подготовить другую сцену (возможно, загрузив ее из другого FXML) и установить ее. При этом старая сцена будет отвязана от окна (можно ее сохранить, чтобы потом вернуть, или она станет доступна для сборщика мусора, если больше не нужна). Обратите внимание: один Stage одновременно отображает ровно одну Scene. Нельзя показать две сцены в одном окне параллельно, нужно либо объединять элементы в одной сцене, либо открывать новое окно.
