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

BorderLayout(배열, ArrayList활용)

ZI_CO 2022. 9. 13.

BorderLayout은 컨테이너를 North, South, East, West, Center 모두 5개의 영역으로 나누고, 각 영역에 하나의 컴포넌트만을 배치할 수 있도록 한다. 그래서 한 영역에 여러 개의 컴포넌트를 배치하면, 마지막에 추가한 컴포넌트만 보이게 된다.

한 영역에 하나 이상의 컴포넌트르 넣기 위해 Panel을 이용해야 한다. Panel에 원하는 컴포넌트들을 넣은 다음, BorderLayout의 한 영역에 다시 이 Panel을 넣으면 된다.

BorderLayout은 컨테이너인 Window, Frame, Dialog의 기본 Layout이다. 즉, 이 컨테이너들의 레이아웃 매너저는 따로 설정하지 않아도 생성되어질 때부터 이미 BorderLayout으로 설정되어 있다는 것이다.

 

예제를 실행시킨 후 Frame의 크기를 좌우로 그리고 상하로 변경해 본 것이다. 이때의 변화를 잘 살펴보자.

        ▶ Frame의 크기를 상하로 늘렸을 때

          - West, Center, East영역의 길이만 상하로 늘어나고 North와 South영역에는 아무런 변화가 없다.

        ▶ Frame의 크기를 좌우로 늘렸을 때

          - North, Center, South영역의 길이만 좌우로 늘어나고 West와 East영역에는 아무런 변화가 없다.

 

 

package ch01;

import java.awt.BorderLayout;
import java.util.ArrayList;

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

public class BorderLayoutEx01 extends JFrame {
	
	ArrayList<JButton> buttons = new ArrayList<>();
	private String[] strarr = {"동","서","남","북","센터"};
	String[] border = {BorderLayout.EAST,  BorderLayout.WEST, BorderLayout.SOUTH, BorderLayout.NORTH, BorderLayout.CENTER};
	

//	JButton button1 = new JButton("동");
//	JButton button2 = new JButton("서");
//	JButton button3 = new JButton("남");
//	JButton button4 = new JButton("북");
//	JButton button5 = new JButton("센터");

	private BorderLayout borderLayout;

	public BorderLayoutEx01() {
		inItData();
		setInitLayout();
	}

	private void inItData() {
		setTitle("border Layout 연습");
		setSize(400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		for(int i = 0; i <  strarr.length; i++) {
			buttons.add(new JButton(strarr[i]));
		}

		
		// JButton 초기화 완료됨.. (멤버 변수로 처리)
		borderLayout = new BorderLayout();

	}

	private void setInitLayout() {
		setVisible(true);
		setLayout(borderLayout);
//		add(button1, BorderLayout.EAST);
//		add(button2, BorderLayout.WEST);
//		add(button3, BorderLayout.SOUTH);
//		add(button4, BorderLayout.NORTH);
//		add(button5, BorderLayout.CENTER);
		
		for(int i = 0; i < buttons.size(); i++) {
			add(buttons.get(i), border[i]);
		}
		
		// 프레임에 add하는 동작만 시켜 주면 됩니다.
		// 직접 코딩해 보세요(문서 확인 요망)
	
	}

	public static void main(String[] args) {

		
		new BorderLayoutEx01();
	} // end of class

}

댓글