JavaFX | JavaFX 응용 프로그램 기본 코드 | Scene, Pane 및 구성 요소


그럼, 이 창에 간단한 구성 요소를 추가하자. 가장 간단한 것으로, 텍스트를 표시만 하는 요소를 추가하여보기로 하자.

아래에 소스 코드가 그 예이다.

package com.devkuma.javafx;
 
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
 
public class App extends Application {
 
    public static void main(String[] args) {
        launch(args);
    }
 
    @Override
    public void start(Stage stage) throws Exception {
        Label label = new Label("This is JavaFX!");
        BorderPane pane = new BorderPane();
        pane.setCenter(label);
        Scene scene = new Scene(pane, 320, 240);
        stage.setScene(scene);
        stage.show();
    }
 
}

이것을 실행하면 윈도우 중앙에 “This is JavaFX!“라는 텍스트가 표시된다.

텍스트의 표시는, AWT/Swing과 마찬가지로 “Label"이라는 클래스가 포함되어 있다. 이것은 SWT/Swing의 “Label"과는 다르다. javafx.scene.control 패키지에 포함되어 있는 JavaFX 전용이다.

이것으로 텍스트를 표시가능 하지만, 그러나 단순히 Stage에 Label을 추가할 수 있는가? 그러지는 않는다. Stage에는 “Scene"과 “Pane"이라는 것을 사용하지 않으면 안된다.

Scene이란?

“Scene"이라는 것은 Stage에 포함되어 있지만 보이지 않는 컨테이너이다. Stage는 윈도우이지만,이 창에 표시되는 내용을 구축하는 것이 Scene이다. 이 Scene에 포함된 것을 Stage에 집어넣어 표시하는 것이다. 이 Scene은 다음과 같은 형태로 인스턴스를 생성한다.

new Scene(Pane, 폭, 높이);

폭과 높이는 알고 있듯이 생성할 컨테이너의 크기이다. 이를 Stage에 집어넣는 것으로, 그 크기에 윈도우가 조정된다.

그럼 Pane이란? 구성 요소 종류를 포함 토대가 되는 컨테이너이다. Scene은 Pane을 하나만 포함 할 수 있도록 되어있다.

Pane은 1개만 있는 것이 아니라 여러 가지 종류가 있다. Pane안에서 어떠한 구성 요소를 포함되어 있는가에 따라 레이아웃 방식이 달라진다. AWT/Swing이라고 한다면 “레이아웃 매니저"와 같은 것이다. 다만, 레이아웃 관리만하는 레이아웃 매니저와 달리 Pane은 “컨테이너에 레이아웃 매니저 기능이 내장된 것"이라고 생각하면 좋을 것이다.

정리하면 구성 요소를 사용하는 윈도우의 구성은 다음과 같다.

  • Stage에서 Scene이 포함되어 있다.
  • Scene에 Pane이 포함되어 있다.
  • Pane에서 구성 요소가 포함되어 있다.

이것으로 겨우 구성 요소 종류를 사용할 수있게 되는 것이다. 조금 구조는 다르지만, Swing 등 컨테이너를 조합하여 화면을 만들었으니 그만큼 위화감은 없을 것이다.