simDev1234
심플하고 차분하게
simDev1234
전체 방문자
오늘
어제
  • 분류 전체보기
    • Computer Science
      • Basic Math
      • Data Structure
      • Algorithm
      • Database
      • OS
    • Language
      • Java
      • Kotlin
      • SQL
    • Framework
      • Spring
      • Orm&Mapper
      • 프로젝트로 스프링 이해하기
      • 스프링 라이브러리
    • Infra
      • Cloud
      • Docker
      • Redis
      • AWS, Azure
      • Device
    • Etc
      • CleanCoding
    • Git,Github

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 스프링
  • 404
  • 참조변수
  • 컨트롤러
  • 자바
  • 자바프로그램
  • null
  • 참조타입
  • 자바프로그래밍
  • scanner #next() #nextLine()
  • 자바메모리구조
  • JVM메모리구조
  • controllerTest

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
simDev1234

심플하고 차분하게

[자바API_AWT/Swing] 배치관리자와 레이아웃 종류
Language/Java

[자바API_AWT/Swing] 배치관리자와 레이아웃 종류

2022. 3. 26. 23:04

■ 배치관리자(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
    'Language/Java' 카테고리의 다른 글
    • [자바의정석_예제] 객체지향프로그래밍1
    • [자바의정석_예제] 조건문과 반복문
    • [자바API_AWT/Swing] JFrame 컨테이너로 윈도우창 만들기
    • [자바API_AWT/Swing] GUI (Graphic User Interface)의 기초
    simDev1234
    simDev1234
    TIL용 블로그. * 저작권 이슈가 있는 부분이 있다면 댓글 부탁드립니다.

    티스토리툴바