1. LayoutManager (배치관리자)

# 컨테이너 안의 각 컴포넌트의 위치와 크기를 자동으로 결정하는 작업



1) BorderLayout


- Frame 컨테이너의 기본값 (배치관리자의 기본값) 

- 동/서/남/북/중앙의 원리로 지정

- 기본값은 중앙


(1) Constructor

- BorderLayout()

-- BorderLayout(int hgap, int vgap): 컴포넌트 사이의 가로, 세로 간격을 지정


(2) Field

- static String CENTER: 중앙 배치

- static String EAST: 동쪽 배치

- static String WEST: 서쪽 배치

- static String NORTH: 북쪽 배치

- static String SOUTH: 남쪽 배치


# BorderLayout 연습하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package guiex;
 
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
public class GuiTest05 extends Frame {
 
    Button[] btn;
    String[] str = { "EAST""WEST""SOUTH""NORTH""CENTER" };
 
    public GuiTest05() {
        // #1. 컨테이너
        super("BorderLayout");
        setSize(400400);
 
        // #2. 컴포넌트
        btn = new Button[5];
        for (int i = 0; i < btn.length; i++) {
            btn[i] = new Button(str[i]);
        }
 
        // #3. 배치 관리자
        setLayout(new BorderLayout(1010)); 
 
        // #4. add()
        add(btn[0], BorderLayout.EAST);
        add(btn[1], BorderLayout.WEST);
        // add(BorderLayout.WEST, btn[1]); // 순서가 반대여도 무방 
        // add(btn[1], "west"); // west로 써도 무방
        
        add(btn[2], BorderLayout.SOUTH);
        add(btn[3], BorderLayout.NORTH);
        add(btn[4], BorderLayout.CENTER);
        // add(btn[4]); // default는 CENTER
 
        setVisible(true);
    }
 
    public static void main(String[] args) {
 
        GuiTest05 g5 = new GuiTest05();
        
    }
}
cs

# 실행 화면



2) FlowLayout


- 컴포넌트들을 수평으로 순서대로 나열해놓는 배치관리자 

- Panel 컨테이너의 디폴트 배치관리자이다. 

 

(1) Constructor

- FlowLayout()

- FlowLayout(int align): 정렬값을 지정하여 생성

- FlowLayout(int align, int hgap, int vgap): 정렬값과 가로, 세로 간격을 지정하여 생성


(2) Field

- static int CENTER: 중앙 정렬

- static int LEFT: 왼쪽 정렬

- static int RIGHT: 오른쪽 정렬

- static int TRAILING: 컴포넌트가 아래로 밀려날 시 오른쪽 정렬

- static int LEADING: 컴포넌트가 아래로 밀려날 시 왼쪽 정렬


#  FlowLayout 연습하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package guiex;
 
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
public class GuiTest06 extends Frame {
 
    Button[] btn;
    String[] str = { "1""2""3""4""5" };
 
    public GuiTest06() {
        // #1. 컨테이너
        super("FlowLayout");
        setSize(400100);
 
        // #2. 컴포넌트
        btn = new Button[5];
        for (int i = 0; i < btn.length; i++) {
            btn[i] = new Button(str[i]);
            add(btn[i]);
        }
 
        // #3. 배치 관리자
        // setLayout(new FlowLayout());
        FlowLayout fl = new FlowLayout();
        setLayout(fl);
        fl.setHgap(0); // 간격 조정
 
        setVisible(true);
    }
 
    public static void main(String[] args) {
 
        GuiTest06 g6 = new GuiTest06();
        
    }
}
cs

# 실행 화면



3) GridLayout


- 격자문양의 가로, 세로를 같은 크기의 비율로 나누어 각 공간에 컴포넌트들을 배치할 수 있는 관리자이다. 

- 만일 행과 열의 수보다 컴포넌트의 수가 많을 경우, 행의 개수를 우선으로 한다. 


(1) Constructor

- GridLayout()

- GridLayout(int rows, int cols): 행과 열을 지정하여 생성

- GridLayout(int rows, int cols, int hgap, int vgap): 행과 열 그리고 가로, 세로 간격을 지정하여 생성


# GridLayout 연습하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package guiex;
 
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
 
public class GuiTest07 extends Frame {
 
    
    public GuiTest07() {
        // #1. 컨테이너
        super("GridLayout");
        setSize(600600);
 
        // #2. 컴포넌트
        add(new Button("1"));
        add(new Button("2"));
        add(new Button("3"));
        add(new Button("4"));
        add(new Button("5"));
        add(new Button("6"));
        add(new Button("7"));
 
        // #3. 배치 관리자
        setLayout(new GridLayout(32)); // 추가되면 행은 그대로, 열은 가변적 
 
        setVisible(true);
    }
 
    public static void main(String[] args) {
 
        GuiTest07 g7 = new GuiTest07();
        
    }
}
cs

# 실행 화면

# 버튼이 총 6개일 경우


# 버튼이 총 7개일 경우


'JAVA > JAVA2' 카테고리의 다른 글

JAVA2_day12 | 내부 클래스 (Inner class)  (0) 2018.01.30
JAVA2_day11 | GUI 연습문제 (1)  (0) 2018.01.30
JAVA2_day11 | GUI (List, Choice)  (0) 2018.01.30
JAVA2_day11 | GUI (Checkbox, CheckboxGroup)  (0) 2018.01.30
JAVA2_day11 | GUI (Label)  (0) 2018.01.30