프로그래밍 언어/JAVA

GridLayout 배치관리자

· 코딩마이데이

배치 방법

GridLayout은 컨테이너 공간을 그리드(격자) 모양으로 분할하여 각 셀에 하나씩 컴포넌트를 배치하는 방법입니다. GridLayout은 부착되는 순서대로 컴포넌트를 셀에 배치합니다.

컴포넌트를 삽입하는 방법은 다른 배치관리자와 별반 다르지 않으며 다음과 같습니다.

container.setLayout(new GridLayout(4, 3)); // 4x3 분할로 컴포넌트 배치
container.add(new JButton("1")); // 상단 왼쪽 첫 번째에 버튼 배치
conainer.add(new JButton("2")); // 그 옆 셀에 버튼 배치

 

GridLayout의 생성자와 속성

GridLayout 배치관리자의 생성자는 다음과 같습니다.

GridLayout()

GridLayout(int rows, int cols)

GridLayout(int rows, int cols, int hGap, int vGap)

  • rows: 그리드의 행 수, 디폴트는 1
  • cols: 그리드의 열 수, 디폴트는 1
  • hGap: 좌우 컴포넌트 사이의 수평 간격, 픽셀 단위, 디폴트는 0
  • vGap: 상하 컴포넌트 사이의 수직 간격, 픽셀 단위, 디폴트는 0

GridLayout의 생성자를 사용하는 예를 들면 다음 코드와 같습니다.

new GridLayout(); // 1x1 그리드에 배치하는 GridLayout 배치관리자 생성
new GridLayout(4, 3, 5, 5); // 4x3 그리드에 hGap=5, vGap=5의 간격으로 컴포넌트를 배치하는 GridLayout 배치관리자 생성

 

셀 수보다 많은 컴포넌트가 추가되면 생성자에 주어진 행 수(rows)와 열 수(cols)가 지켜지지 않으며, 모든 컴포넌트를 수용하도록 행과 열의 수가 적당히 변형됩니다.

 

GridLayout으로 입력 폼 만들기

import javax.swing.*;
import java.awt.*;

public class GridLayoutEx extends JFrame {
    public GridLayoutEx() {
        setTitle("GridLayout Sample");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 4x3 격차의 GridLayout 배치 관리자 생성
        GridLayout grid = new GridLayout(4, 3);
        grid.setVgap(5); // 격자 사이의 수직 간격을 5 픽셀로 설정

        Container c = getContentPane();
        c.setLayout(grid); // grid를 컨텐트팬의 배치관리자로 지정
        c.add(new JLabel(" 이름"));
        c.add(new JTextField(""));
        c.add(new JLabel(" 학번"));
        c.add(new JTextField(""));
        c.add(new JLabel(" 학과"));
        c.add(new JTextField(""));
        c.add(new JLabel(" 과목"));
        c.add(new JTextField(""));

        setSize(300, 200);
        setVisible(true);
    }
    public static void main(String[] args) {
        new GridLayoutEx();
    }
}

 

실행결과