본문 바로가기

자바공부

자바 컨테이너와 배치(1), 명품자바프로그래밍 9장

728x90
반응형

* 컨테이너에는 여러 개의 컴포넌트를 부착할 수 있다.

배치관리자(Layout Manager)가 컨테이너에 부착되는 컴포넌트들의 위치와 크기를 결정한다.

배치관리자는 컨테이너에 속한 것으로 컨테이너마다 하나씩 존재한다.

 

* AWT나 스윙의 컨테이너의 특징

1) 하나의 컨테이너는 반드시 하나의 배치관리자를 가진다.

2) 배치관리자는 컨테이너에 컴포넌트가 들어오는 시점에 컴포넌트의 위치와 크기를 결정한다.

3) 배치관리자는 컨테이너의 크기가 변경되면 컨테이너 내부의 모든 컴포넌트들의 위치와 크기를 재조정한다.

컨테이너와 배치, 배치관리자 사이의 관계

* 자바에는 대표적인 4가지 배치관리자가 있다.

배치관리자는 java.awt 패키지에 존재한다.

import java.awt.*;

1) FlowLayout

컨테이너에 컨포넌트가 들어오면 순서대로 왼쪽에서 오른쪽으로 매치하며, 오른쪽에 더 이상 배치할 공간이 없으면 아래로 내려와서 다시 왼쪽에서 오른쪽으로 배치한다.

2) BoardLayout

컨테이너의 공간을 동(EAST), 서(WEST), 남(SOUTH), 북(NORTH), 중앙(CENTER)의 5개의 영역으로 나누고 응용프로그램에서 지정한 영역에 컴포넌트를 배치한다.

3) GridLayout

컨테이너의 공간을 응용프로그램에서 설정한 동일한 크기의 2차원 그리드로 나누고, 컴포넌트를 들어오는 순서대로 좌에서 우로, 다시 위에서 아래로 순서대로 배치한다. 컴포넌트의 크기는 셀의 크기와 일치한다.

4) CardLayout

컨테이너의 공간에 카드를 쌓아 놓은 듯이 컴포넌트를 포개어 배치한다. 컴포넌트의 크기는 컨테이너의 크기와 일치시킨다.

 

* 컨테이너가 생성될 때 자동으로 디폴트 배치관리자가 생성된다.

AWT와 스윙 컨테이너 디폴트 배치관리자
Window, JWindow BorderLayout
Frame, JFrame BorderLayout
Dialog, JDialog BoarderLayout
Panel, JPanel FlowLayout
Applet, JApplet FlowLayout

 

* Container 클래스의 setLayout() 메소드를 호출하여 컨테이너에 새로운 배치관리자를 마음대로 설정할 수 있다.

Container.setLayout(LayoutManager 1m);	// 1m을 컨테이너의 새로운 배치관리자로 설정한다.

JPanel p = new JPanel();
p.setLayout(new BorderLayout());	// 패널에 BorderLayout 배치관리자 설정

* FlowLayout 배치관리자를 설정하는 방법

JFrame frame = new JFrame();
Container c = frame.getContentPane(); // 프레임의 컨텐트팬
c.setLayout(new FlowLayout()); // 컨텐트팬에 FlowLayout 설정

// 혹은

frame.setLayout(new FlowLayout()); // JDK 1.5 이후 버전에서
반응형