Christmas Pikachu GridLayout(배열, ArrayList활용)
개발일지/자바

GridLayout(배열, ArrayList활용)

ZI_CO 2022. 9. 13.

GridLayout은 컨테이너를 테이블처럼 행과 열로 나누어 컴포넌트를 배치한다. 여기에 추가되는 컴포넌트들은 모두 같은 크기로 나누어지며, 컨테이너의 크기를 변경하면 각 영역이 모두 같은 비율로 커지거나 작아지는 성질을 갖고 있다.

 

특징 :  화면을 꽉 채우는 특징이 있다.

 

 Frame에 Button이 추가될 때 어떤 순서로 GridLayout의 영역에 추가되는지 쉽게 알 수 있을 것이다.

첫번째 행의 열들을 모두 채운 후에 그 아래 행의 열들을 채운다. 이와 같은 방식으로 컴포넌트들이 추가되게 된다.

그리고 , 오른쪽의 그림은 실행 후 Frame의 크기를 늘린 것인데, 늘어난 후에도 각 영역의 Button 들이 모두 같은 크기를 유지하는 것을 알 수 있다.(각 영역은 서로 다른 크기로 지정될 수 있으며, 인접한 열 또는 행으로의 확장이 가능하다.)

 

package ch01;

import java.awt.GridLayout;
import java.util.ArrayList;

import javax.swing.JButton;
import javax.swing.JFrame;

public class GridLayoutEx01 extends JFrame {
	// ArrayList 사용법 숙지
	private String[] strArr = { "가", "나", "다", "라" };
	private ArrayList<JButton> buttons = new ArrayList<>();

	public GridLayoutEx01() {
		initData();
		setInitLayout();

	}

	private void initData() {
		setTitle("그리드 레이아웃 연습");
		setSize(400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		for (int i = 0; i < strArr.length; i++) {
			buttons.add(new JButton(strArr[i]));
		}

//		gridLayout = new GridLayout(2,3);

	}

	private void setInitLayout() {
		setVisible(true);
		// setLayout : JFram의 배치 관리자 지정
		setLayout(new GridLayout(2, 3)); // 화면을 꽉 채우는 특징이 있다.

		for (int i = 0; i < strArr.length; i++) {
			add(buttons.get(i));
		}
//		add(button1); // 버튼을 화면에 배치 add사용
//		add(button2);
//		add(button3);
//		add(button4);
//		add(button5);
//		add(button6);

	}

	public static void main(String[] args) {

		new GridLayoutEx01();
	}

}

댓글