본문 바로가기
코스웨어/10년 스마트폰BSP

[BSP]업무일지 - 이도헌2010/08/31

by 알 수 없는 사용자 2010. 8. 31.
728x90
반응형

레이아웃 매니저 

 

1. 컴포넌트의 배치

자바는 일정한 모양으로 컴포넌트를 배치할 수 있도록 하기 위해 레이아웃 매니저를 제공한다.

자바에서 컴포넌트의 위치를 결정하는 방법은 두 가지가 있다.

- 컨테이너에 add()메소드를 사용하는 순서에 따라 위치가 정해진다.

- 레이아웃 매니저에 따라 위치가 정해진다.

레이아웃 관리자는 FlowLayout, GridLayout, BorderLayout, CardLayout, GridBagLayout 등이 있다.
레이아웃 매니저를 사용해 레이아웃을 지정하는 방법은 간단하다.
setLayout()메소드에 레이아웃 매니저의 객체를 매개변수로 사용한다.


[setLayout() 메소드의 사용방법

 setLayout(레이아웃 매니저의 객체);

 예) setLayout(new FlowLayout());]


2. 플로우 레이아웃(FlowLayout)

컴포넌트를 가로 방향으로 배치할 때 사용한다. 만약에 컴포넌트를 한 줄로 표시할 수 없으면 다음 줄로 이동한다.
애플릿은 기본적으로 플로우 레이아웃을 사용한다.

12라인의 setBound()메소드는 setSize()와 setLocation()메소드의 기능을 한 번에 지정한다.
첫번째와 두번째 매개변수는 프레임의 시작 위치 좌표이다. 세번째, 네번째 매개변수는 프레임의 크기이다.
실행된 창의 크기를 변경시키면 창의 크기에 맞게 버튼이 정렬된다. 맨 윗줄의 폭을 기준으로 정렬되는 것이다.


3. 보더 레이아웃(BorderLayout)

보더 레이아웃은 동, 서, 남, 북, 중앙으로 화면을 분할한다. 중앙에는 중요한 컴포넌트를 두고, 그 주변에 보조 컴포넌트를 배치할 때 사용한다.
Frame컨테이너의 기본 레이아웃이다.아래는 BorderLayout의 북쪽에 “레이아웃” 레이블을 등록하고, 중앙에 버튼 3개를 등록한다.
그리고 남쪽에 TextField를 등록한다. 문제는 Center에 버튼 3개를 등록하는 것이다. 레이아웃을 사용해 컴포넌트의 위치를 정하면,
한 개의 컴포넌트가 한 개의 영역을 차지하게 된다.
보더 레이아웃의 중앙에 3개의 버튼을 등록하려면 패널을 만들어 패널에 FlowLayout으로 버튼을 3개 등록하고,그 패널을 중앙에 등록해야 한다

4. 그리드 레이아웃(GridLayout)

그리드 레이아웃은 컴포넌트를 행과 열의 수에 맞게 배치할 때 사용한다.
맨 윗줄부터 시작해서 왼쪽에서 오른쪽으로 움직이면서 컴포넌트를 하나씩 배치한다.
행과 열로 분할된 각 영역은 모두 같은 크기로 분할된다.

창의 크기를 마우스로 변경해도 3행 2열 형태의 모양은 유지되고, 각 영역의 크기가 동일하게 조정된다.





5. 카드 레이아웃(CardLayout)

카드 레이아웃은 한 개의 컴포넌트를 한 개의 카드로 표현하는 방법이다.
여러 개의 컴포넌트를 여러 개의 카드에 배치하는 경우에, 각 카드에 이름을 붙여 사용한다.
해당 카드를 출력할 때, 해당 카드의 이름을 show() 메소드로 출력하거나, first(), last(), next() 등의 메소드를 이용해 화면을 출력할 수 있다.


카드 레이아웃을 사용하기 위해서는 다음과 같은 과정으로 처리해야 한다.

- setLayout()메소드를 이용해 카드 레이아웃을 등록한다.

- 카드 레이아웃에 등록할 Panel을 만든다.

- add()메소드를 이용해 패널을 컨테이너에 추가한다

- 원하는 카드를 보여주기 위해 show(), next(), first(), last()메소드를 사용한다.

 for 블록에서 패널을 5개 만들고, 배경색을 다르게 한 다음에 add()메소드를 사용해서 각 패널을 등록한다.

add((new Integer(i)).toString(), panel[i]);

첫번째 매개변수인 new Integer(i)).toString()은 정수 i를 문자로 바꾸기 위해 Wrapper클래스인 Integer()를 사용했다.
i번째 패널을 카드 번호 i에 등록한다.

. 실행 결과 화면에서 마우스를 클릭하면 빨강, 파랑, 노랑, 초록, 청록색 순서로 배경색이 바뀌게 된다.

6. 그리드백 레이아웃(GridBagLayout)

지금까지 살펴본 레이아웃은 형식이 정해져 있다. 컴포넌트의 위치와 크기를 자유롭게 만들고 싶다면 그리드백 레이아웃을 사용해야 한다.
그리드백 레이아웃은 가장 강력한 기능을 제공한는 레이아웃이지만 사용방법이 복잡하다.

 

순서는 다음과 같다.

1. 그리드백 레이아웃을 만든다.

GridBagLayout grid = new GridBagLayout();

2. 그리드백 콘스트레인트를 만든다.

GridBagConstraints con = new GridBagConstraints();

3. 컨테이너의 레이아웃을 그리드백 레이아웃으로 지정한다.

setLayout(grid);

4. 그리드백 콘스트레인트의 채우기 스타일을 지정한다.

con.fill = GridBagConstraints.BOTH;

5. 그리드백 콘스트레인트에 변수 값을 선언한다.

con.weightx = 1.0;

weightx, weighty는 변경될 컴포넌트의 크기를 제어한다. 만약 0이면 크기가 변경되지 않으며,
0이 아닌 경우에는 값에 비례해 컴포넌트의 크기가 변경된다.

6. 컴포넌트를 그리드백 콘스트레인트에 설정한다.

grid.setConstraints(button, con);

7. 그리드백 레이아웃에 컴포넌트를 등록한다.

add(button);



 

728x90