■ 배치관리자(LayoutManager)
- 레이아웃의 조상 인터페이스이다.
■ 레이아웃이란?
- 레이아웃은 컴포넌트들을 배치하는 방식을 말하는 것으로,
이 방식에 따라 컨테이너 안에 추가되는 컴포넌트의 위치와 크기를 자동적으로 결정한다.
- 레이아웃 곧, 배치 방식도 하나의 객체이므로, 객체 생성 후 사용이 가능하다.
(단, 컨테이너처럼 디폴트로 가진 레이아웃 방식이 있는 경우 반드시 레이아웃 객체를 생성할 필요가 없다)
■ 레이아웃의 종류
배치방식 | 특징 |
BorderLayout | 컴포넌트를 동서남북, 중간에 배치할 수 있다. *JFrame,JApplet,JDialog의 디폴트 배치관리자 |
FlowLayout | 컴포넌트를 최상단에서 좌->우로 배치한다. *JPanel, Applet의 디폴트 배치관리자 |
GridLayout | 컴포넌트를 바둑판 형식으로 배치(행과 열) *행을 기준으로 열의 갯수가 자동 지정 |
CardLayout | 여러 장의 카드를 겹쳐놓은 형태 |
BoxLayout | (생략) |
참조 --
아래 내용부터는 https://movefast.tistory.com/46 내용을 일부 수정, 요약하였다.
■ BorderLayout
- 최상위 컨테이너 JFrame, JApplet, JDialog는 BorderLayout방식을 따른다.
만약, 컨테이너 내에 컴포넌트 객체를 추가할 경우, 아래와 같이 컴포넌트가 배치될 영역을 지정한다.
add(객체명, "East"); 또는 add(객체명, BorderLayout.EAST);
- 컴포넌트가 배치될 영역을 지정하지 않으면 자동으로 Center로 배치된다.
- 같은 위치에 컴포넌트를 추가하면 뒤 컴포넌트가 앞 컴포넌트를 가릴 수 있다.
생성자/메소드 | 설명 |
BorderLayout() | |
BorderLayout(int hgap, int vgap) | hgap : horizonal gap, vgap : vertical gap 수평, 수직 간격을 생성과 동시에 지정 |
setHgap(int hgap) : void | 수평 간격 지정 |
setVgap(int vgap) : void | 수직 간격 지정 |
■ FlowLayout
- JPanel의 디폴트 배치관리자.
- 너비를 벗어날 경우 다음 줄에서 다시 배치 시작
생성자 | 설명 |
FlowLayout() | 기본 설정 : 중앙배치, 수평 수직 5px간의 간격 |
FlowLayout(int align) | align = 정렬 방식 FlowLayout.LEADING, FlowLayout.CENTER, FlowLayout.TRAILING |
FlowLayout(int align, int vgap, int hgap) | 정렬방식, 수평간격, 수직간격 설정 |
■ GridLayout
- 행과 열의 바둑판 형식으로 컴포넌트 배치
- 모든 컴포넌트의 크기는 같으며, 모든 공간을 컴포넌트로 채운다.
- 행을 기준으로 격자를 맞추는 것이 원칙이다.
- 윈도우의 크기를 변경하면 그 크기에 맞추어 컴포넌트의 크기가 자동 변경된다.
생성자 | 설명 |
GridLayout(int rows, int cols) | 기본 설정 : 컴포넌트 수에 맞춰 자동 설정됨 수동 설정 : 행, 열 갯수 입력 |
GridLayout(int rows, int cols, int hgap, int vgap) | 행, 열, 수평간격, 수직간격 |
■ CardLayout
- 여러 장의 컨테이너 객체(카드)를 겹겹이 겹쳐 놓은 형태
- 하나의 컨테이너의 배치 방식을 CardLayout로 하고, 그 안에 다수의 컨테이너를 묶는다.
생성자/메소드 | 설명 |
CardLayout() | |
CardLayout(int hgap, int vgap) | 수평 수직간격 설정 |
previous(Container parent) : void |
이전 순서의 컨테이너 show |
next(Container parent) : void |
다음 순서의 컨테이너 show |
first(Container parent) : void | 첫번째 순서의 컨테이너 show |
last(Container parent) : void |
마지막 순서의 컨테이너 show |
show(Container parent, String s) : void |
특정 이름(문자열)의 컨테이너 show |
[참조]
- 블로그 https://movefast.tistory.com/46
- 오라클 https://docs.oracle.com/javase/7/docs/api/java/awt/LayoutManager.html
'Language > Java' 카테고리의 다른 글
[자바의정석_예제] 객체지향프로그래밍1 (0) | 2022.03.27 |
---|---|
[자바의정석_예제] 조건문과 반복문 (0) | 2022.03.27 |
[자바API_AWT/Swing] JFrame 컨테이너로 윈도우창 만들기 (0) | 2022.03.26 |
[자바API_AWT/Swing] GUI (Graphic User Interface)의 기초 (0) | 2022.03.26 |
[자바_복습] 이클립스에서 템플릿 만들기 (0) | 2022.03.24 |