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

JavaFX 장면 그래프(Scene Graph) 핵심 개념 완벽 정리

JavaFX 장면 그래프란?

JavaFX에서 GUI 애플리케이션은 장면 그래프(Scene Graph)를 기반으로 구성됩니다. 장면 그래프는 현대적인 그래픽 애플리케이션에서 널리 사용되는 트리(tree)와 유사한 데이터 구조로, 애플리케이션의 시작점 역할을 하며 여러 개의 노드(Node)들이 모여 이루어진 집합입니다.

JavaFX에서 화면에 무언가를 표시하려면 먼저 노드들을 활용해 장면 그래프를 구성한 뒤, 이를 JavaFX 애플리케이션의 최상위 컨테이너인 Stage 클래스 객체에 설정해야 합니다.

노드(Node)란?

노드는 JavaFX 애플리케이션을 구성하는 시각적·그래픽 기본 요소입니다. 버튼, 텍스트 필드, 이미지 등 화면에 나타나는 모든 구성 요소가 노드에 해당합니다.

장면 그래프의 구조와 규칙

  • 루트 노드(Root Node): 장면 그래프의 모든 노드는 단 하나의 부모만 가질 수 있으며, 부모가 없는 최상위 노드를 루트 노드라고 합니다.
  • 리프 노드(Leaf Node)와 브랜치 노드(Branch Node): 자식이 없는 노드를 리프 노드라고 하고, 하나 이상의 자식을 가진 노드는 브랜치 노드라고 합니다.
  • 단일 추가 규칙: 하나의 노드 인스턴스는 장면 그래프에 오직 한 번만 추가될 수 있습니다. 동일한 노드를 여러 위치에 동시에 배치하는 것은 허용되지 않습니다.

또한 장면 그래프의 각 노드에는 다음과 같은 속성과 기능을 적용할 수 있습니다.

  • 효과(Effects)
  • 투명도(Opacity)
  • 변환(Transforms)
  • 이벤트 핸들러(Event Handlers)
  • 애플리케이션 고유 상태(Application Specific States)

JavaFX 장면 그래프(Scene Graph) 핵심 개념 완벽 정리

Scene 클래스의 역할

JavaFX 애플리케이션에서 javafx.scene.Scene 클래스는 장면 그래프의 모든 콘텐츠를 담는 컨테이너 역할을 합니다. Scene 객체를 생성할 때는 반드시 루트 노드를 지정해야 하며, 이 루트 노드를 시작점으로 전체 UI 계층 구조가 형성됩니다.