Jeomxon's Tech Note

2019-07-18 모각코(3) 본문

Mogaco/2019하계

2019-07-18 모각코(3)

저문(jeomxon) 2019. 10. 29. 11:13

--------------------------------------------------------------------------

날짜 : 2019-07-18

회차 : 3

목표 : 3시간 동안 최대한 Chapter 14 배치 관리자 끝내기

---------------------------------------------------------------------------

***오늘 배운 내용 정리***

 

Chapter14 배치 관리자

 

1. 배치 관리자의 개요

*배치 관리자(layout manager) : 컴포넌트의 배치를 자동화하는 관리자

-FlowLayout : 컴포넌트들을 왼쪽에서 오른쪽으로 버튼을 배치한다.

-BorderLayout : 상, 하, 좌, 우, 중앙 중 하나로 컴포넌트들이 추가된다.

-GridLayout : 컴포넌트들을 격자 모습으로 배치한다.

-BoxLayout : 컴포넌트를 하나의 행이나 열에 배치한다.

-CardLayout : 여러 장의 카드 위에 컴포넌트를 배치한다.

 

2. 배치 관리자를 사용하는 방법

컨테이너 클래스에 배치 관리자를 설정하려면 먼저 new연산자를 이용하여 배치 관리자 객체를 만들고 컨테이너 클래스의 setLayout() 메서드를 사용하여 이 객체를 배치 관리자로 지정한다. 

 

- 배치 방향 설정

보통 왼쪽에서 오른쪽, 위쪽에서 아래쪽으로 컴포넌트를 정렬한다.

컨테이너의 방향을 설정하기 위해서는 setComponentOrientation() 또는 applyComponentOrientation()을 사용한다.

 

3. FlowLayout 클래스

FlowLayout은 JPanel 클래스의 디폴트 배치 관리자이다.

 

*생성자

-FlowLayout() : 새로운 FlowLayout객체를 생성, 기본 설정은 중앙 배치이며 간격은 세로, 가로 각각 5픽셀이다.

-FlowLayout(int align) : FlowLayout.LEADING, FlowLayout.CENTER, FlowLayout.TRAILING <--- 정렬 매개변수

-FlowLayout(int align, int hgap, int vgap) : 지정된 정렬 방식과 수평 간격 hgap과 수직 간격 vgap을 가진 새로운 FlowLayout 객체를 생성한다.

 

*예제

 

4. BorderLayout 클래스

컨테이너를 5개의 영역으로 구분하고 각각의 영역에 컴포넌트를 배치

 

-사용방법

panel.add(aComponent, BorderLayout.PAGE_START); // 북쪽에 배치한다.

 

*생성자

-BorderLayout(int hgap, int vgap) : 컴포넌트 사이의 수평 간격 hgap과 수직 간격 vgap을 가지는 BorderLayout 객체 생성

-setHgap(int) : 컴포넌트 사이의 수평 간격 설정(단위는 픽셀)

-setVgap(int) : 컴포넌트 사이의 수직 간격 설정

 

*예제

 

 

 

5. GridLayout 클래스

컴포넌트들을 격자 모양으로 배치한다. 모든 컴포넌트들의 크기는 같게 되며 컨테이너의 모든 공간은 컴포넌트로 채워진다.

 

*생성자

-GridLayout(int row, int cols) : rows 행과 cols 열을 가지는 GridLayout 객체를 생성한다. 만약 rows나 cols가 0이면 필요한 만큼의 행이나 열이 만들어진다.

-GridLayout(int rows, int cols, int hgap, int vgap) : rows 행과 cols 열을 가지는 GridLayout 객체를 생성한다. hgap과 vgap은 컴포넌트 사이의 수평 간격과 수직 간격으로 단위는 픽셀이다.

 

ex) setLayout(new GridLayout(3, 0));

 

*예제

 

 

 

6. BoxLayout 클래스

BoxLayout은 컴포넌트를 다른 컴포넌트 위에 쌓거나 컴포넌트를 하나의 행에 배치할 수 있다.

 

*예제

 

 

 

7. CardLayout 클래스

CardLayout 클래스는 여러 개의 카드가 쌓여 있는 형태로 컴포넌트를 배치하는 경우에 사용한다.

이 클래스를 사용하였을 경우 항상 맨 위의 컴포넌트만 보인다. 여러 가지 메소드를 통해 화면에 보이는 카드를 선택할 수 있다.

 

*생성자

-CardLayout() : 디폴트 생성자

-CardLayout(int hgap, int vgap) : hgap과 vgap은 컴포넌트 사이의 수평 간격과 수직 간격을 픽셀로 표시한다. 기본값은 0이다.

 

*메소드

-first (Container parent) : 첫 번째 카드를 선택한다.

-next (Container parent) : 다음 카드를 선택한다. 만약 현재 선택된 카드가 마지막이면 처음으로 간다.

-previous (Container parent) : 이전 카드를 선택한다.

-last (Container parent) : 마지막 카드를 선택한다.

-show (Container parent, String s) : 문자열 s로 지정한 카드를 선택한다.

 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

***활동 정리***

느낀 점 : 먼저 레이아웃을 배움으로써 버튼 등의 배치에 대해서 어떻게 구성을 해야 할지에 대한 방법을 익힐 수 있었으며, 평소 디자인과 같은 외적인 부분을 중요하게 생각해서 레이아웃을 올바르게 앎으로써 더 체계적인 구성과 기능에 맞는 배치를 하는 방법을 깨달을 수 있었던 시간이 되었던 것 같다. 그리고 많은 메소드들이 있어서 무작정 외우기 보다는 주어진 메소드 명에 맞게 외우려고 해 보고 찾아보면서 하는 것이 더 다양하고 기능적인 메소드를 사용할 수 있다는 것을 깨달았다.

 

 

 

'Mogaco > 2019하계' 카테고리의 다른 글

2019-07-16 모각코(2)  (0) 2019.10.29
2019-07-09 모각코(1)  (0) 2019.10.03