본문 바로가기

언어/JAVA

자바 BorderLayout

728x90

 

BorderLayout 개념


BorderLayout은 동(east), 서(west), 남(south), 북(north), 중앙(center)으로 나눠서 컴포넌트들의 자리를 배치한다.

 

컴포넌트의 크기는 무조건 레이아웃에 맞춘다. 그렇기 때문에 굳이 컴포넌트의 크기를 설정할 필요가 없다.

 

또 BorderLayout의 add() 메서드의 두번째 인자값으로 배치할 곳을 명시하지 않을 경우 자동으로 CENTER에 들어가게 된다

 

 

BorderLayout 예제


package sec_borderLayout.exam01;

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test1 extends JFrame{
	
	public Test1() {
		setSize(400, 200);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
		
		JButton btns[] = new JButton[5];
		//setLayout(new BorderLayout(30, 10));
		
		for (int i = 0; i < btns.length; i++) {
			btns[i] = new JButton("Button "+(i+1));
		}
		
		add(btns[0], BorderLayout.EAST);
		add(btns[1], BorderLayout.WEST);
		add(btns[2], BorderLayout.SOUTH);
		add(btns[3], BorderLayout.NORTH);
		add(btns[4], BorderLayout.CENTER);
		
	}
	
	public static void main(String[] args) {
		new Test1().setVisible(true);
	}

}

자바의 JFrame은 기본적으로 레이아웃이 BorderLayout이다.

그래서 위의 코드를 실행하면 JFrame 레이아웃을 따로 설정해주지 않아도 잘 배치가 됨을 알 수 있다.

 

//setLayout(new BorderLayout(30, 10));

위의 코드를 주석 해제하여 아래의 코드와 같이 만들어보자.

주석을 해제한 코드

더보기
더보기
package sec_borderLayout.exam01;

import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test1 extends JFrame{
	
	public Test1() {
		setSize(400, 200);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
		setLocationRelativeTo(null);
		
		JButton btns[] = new JButton[5];
		setLayout(new BorderLayout(30, 10));
		
		for (int i = 0; i < btns.length; i++) {
			btns[i] = new JButton("Button "+(i+1));
		}
		
		add(btns[0], BorderLayout.EAST);
		add(btns[1], BorderLayout.WEST);
		add(btns[2], BorderLayout.SOUTH);
		add(btns[3], BorderLayout.NORTH);
		add(btns[4], BorderLayout.CENTER);
		
	}
	
	public static void main(String[] args) {
		new Test1().setVisible(true);
	}

}
setLayout(new BorderLayout(30, 10));

그럼 컴포넌트 간에 간격이 생긴다.

 

BorderLayout 클래스는 기본 생성자도 있지만 컴포넌트 간의 좌우, 상하 간격을 주려면 2개의 매개변수를 넣어준다.

첫 번째 인자값은 좌우 간격(hgap the horizontal gap), 두 번째 인자값은 상하 간격(vgap the vertical gap)을 뜻한다.

 

위의 코드는 new BorderLayout(30, 10)을 호출함으로 30의 좌우간격, 10의 상하간격이 있는 BorderLayout이 된다.