레이아웃 관리자는 화면에 컨트롤들을 배치하는 역할을 한다.

 

아래의 BorderPane 레이아웃은 구획이 분할되어 있는 레이아웃으로 이 안에 다시 레이아웃을 붙일 수 있다. 임베디드 레이아웃이라고 한다.

 

보더페인 레이아웃은 5개의 위치에 자식들을 가진다. (Children) 자식이라는 관계를 설정한 것으로 봐서는 상위 계층에 종속된 의미도 있다. 레이아웃을 작성할 때 위에서 부터 만들어야 하는 것이다.

 

 

HBox 는 수평으로 진행되는 레이아웃이고 VBox는 수직으로 진행되는 레이아웃이다.

 

아래는 BorderPane 에 이 두개를 포함시키는 예제이다.

 

package com;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application  {

    Stage window;
    Scene scene;
    Button button;

    @Override
    public void start(Stage primaryStage) throws Exception{
        window = primaryStage;
        window.setTitle("JavaFX Layout");

        HBox topMenu = new HBox();
        Button button1 = new Button("File");
        Button button2 = new Button("Edit");
        Button button3 = new Button("View");
        topMenu.getChildren().addAll(button1, button2, button3);

        VBox leftMenu = new VBox();
        Button button4 = new Button("파일");
        Button button5 = new Button("편집");
        Button button6 = new Button("보기");
        leftMenu.getChildren().addAll(button4, button5, button6);

        BorderPane borderPane = new BorderPane();
        borderPane.setTop(topMenu);
        borderPane.setLeft(leftMenu);

        scene = new Scene(borderPane, 500, 300);
        window.setScene(scene);
        window.show();
    }
    
    public static void main(String[] args) {
        launch(args);
    }
}

 

JavaFX에서는 아래의 start 메소드가 일반 애플리케이션의 main 과 마찬가지다.

 

위에서 부터 읽으면 버튼 3개를 Hbox 에 넣고, 또 버튼 3개를 VBox 에 넣고 Hbox를 BorderPane 의 Top 에 넣고 VBox 는 BorderPane 의 Left 에 넣었다. 아래 코드를 보면 만드는 방법은 매우 심플하다.

 

결과를 확인해보고 여러가지를 시도해 보면 레이아웃 짜는 실력이 늘 것이다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band