■ 배치관리자(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

+ Recent posts