Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

JavaFX 애플리케이션 구조 완벽 이해하기: Stage, Scene, Nodes

일반적으로 JavaFX 애플리케이션은 Stage(스테이지), Scene(장면), Nodes(노드)라는 세 가지 핵심 구성 요소로 이루어져 있습니다. 아래 다이어그램은 이러한 구조를 시각적으로 보여줍니다.

JavaFX 애플리케이션 구조 완벽 이해하기: Stage, Scene, Nodes

Stage(스테이지)

Stage는 하나의 창(window)을 의미하며, JavaFX 애플리케이션의 모든 객체를 담는 최상위 컨테이너 역할을 합니다. Stage는 javafx.stage 패키지의 Stage 클래스로 표현되며, 화면에 내용을 표시하려면 반드시 show() 메서드를 호출해야 합니다.

Scene Graph(장면 그래프)

Scene Graph는 트리(tree)와 유사한 계층형 데이터 구조로, 현대적인 그래픽 애플리케이션에서 노드(node)들의 집합을 의미합니다. JavaFX 애플리케이션에서는 javafx.scene 패키지의 Scene 클래스가 장면 그래프의 모든 콘텐츠를 관리합니다.

  • Scene 객체를 생성할 때는 루트 노드(root node)를 반드시 지정해야 합니다.

  • 하나의 Scene 객체는 오직 하나의 Stage에만 추가될 수 있습니다.

Nodes(노드)

Node는 JavaFX 애플리케이션을 구성하는 시각적·그래픽 요소의 기본 단위입니다. 대표적인 노드의 예는 다음과 같습니다.

  • 2D/3D 도형 객체: 원(Circle), 구(Sphere) 등

  • UI 컨트롤 객체: 버튼(Button), 체크박스(CheckBox) 등

  • 컨테이너/레이아웃 객체: BorderPane, GridPane 등

  • 미디어 요소 객체: 오디오, 비디오, 이미지 등

장면 그래프의 모든 노드는 단 하나의 부모(parent)를 가지며, 부모가 없는 노드를 루트 노드라고 합니다. 마찬가지로 자식(children)이 없는 노드는 리프 노드(leaf node), 하나 이상의 자식을 가진 노드는 브랜치 노드(branch node)라고 부릅니다.

JavaFX의 주요 루트 노드 종류

  • Group − 여러 자식 노드를 묶어 관리하는 컬렉션 노드입니다. Group이 렌더링되면 포함된 모든 자식 노드가 순서대로 렌더링되며, Group에 적용된 변환(transform)이나 효과(effect)는 모든 자식 노드에 동일하게 적용됩니다.

  • Region − Chart, Pane, Control 등 JavaFX의 모든 UI 컨트롤 노드의 기본(base) 클래스입니다.

  • WebView − 웹 엔진(web engine)을 관리하고 웹 콘텐츠를 화면에 표시하는 노드입니다.

  • Leaf Node(리프 노드) − 자식 노드를 가지지 않는 말단 노드입니다. Rectangle, Ellipse, Box, ImageView, MediaView 등이 대표적인 예입니다.