* 배치관리자(Layout)
- 화면(Frame)에 컴포넌트들을 배치하는 방법을 알려주는 관리자
- 대표적인 배치관리자의 종류
1) FlowLayout
2) BorderLayout
3) GridLayout
4) CardLayout
* 1. FlowLayout 배치관리자
- 배치 : 좌 -> 우
- 상단 중앙에 컴포넌트를 배치한다
- 화면이 넘칠 경우에는 바로 밑(아리) 중앙에 배치가 됨.
- 배치관리자를 지정하지 않은 경우, default로 FlowLayout 배치 관리자로 배치함.
* 2.BorderLayout 배치관리자
- 배치 : 동쪽, 서쪽, 남쪽, 북쪽, 중앙
* 3. GridLayout 배치관리자
- 객자 모양의 배치관리자
- 행과 열로 화면이 구성됨
- 기준 : 무조건 행 기준
FlowLayout 배치관리자 예제
package sist;
import java.awt.FlowLayout;
import javax.swing.*;
public class Ex18_FlowLayout extends JFrame{
public Ex18_FlowLayout() {
// 프레임 이름 지정
setTitle("FlowLayout 배치관리자");
// 컨테이너 생성
JPanel container = new JPanel();
// 컴포넌트 생성
JButton button1 = new JButton("버튼1");
JButton button2 = new JButton("버튼2");
JButton button3 = new JButton("버튼3");
JButton button4 = new JButton("버튼4");
// 컨테이너에 컴포넌트 올리기
/*
형식) new FlowLayout()
new FlowLayout(정렬, 수평간격, 수직간격)
- 정렬 : default값은 정중앙
left, right등으로 정렬을 바꿀 수 있다
- 수평간격 : 좌우 컴포넌트 사이의 간격.픽셀단위 - 기본값은 5px
*/
container.setLayout(new FlowLayout(FlowLayout.CENTER, 2, 10));
container.add(button1); container.add(button2);
container.add(button3); container.add(button4);
// 프레임에 컨테이너 올리기
add(container);
// 프레임 위치, 크기 지정
setBounds(200, 200, 300, 300);
// 프레임 x 버튼 유효화
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 프레임 보이기
setVisible(true);
}
public static void main(String[] args) {
new Ex18_FlowLayout();
}
}
BorderLayout 배치관리자 예제
package sist;
import java.awt.*;
import javax.swing.*;
public class Ex19_BorderLayout extends JFrame{
public Ex19_BorderLayout() {
// 프레임 이름 지정
setTitle("BorderLayout 배치관리자");
// 컨테이너 생성
JPanel container = new JPanel();
// 컴포넌트 생성
JButton button1 = new JButton("North");
JButton button2 = new JButton("South");
JButton button3 = new JButton("겹치면 어떻게 될까");
JButton button4 = new JButton("East");
JButton button5 = new JButton("West");
JButton button6 = new JButton("Center");
/*
2. 컨테이너에 컴포넌트 올리기
border layout 관리자로 올리기
형식) new BorderLayout()
new BorderLayout(수평간격, 수직간격)
- 수평간격 : 좌우 컴포넌트 사이의 간격(픽셀단위), 기본값 0
- 수직간격 : 상하 컴포넌트 사이의 간격(픽셀단위), 기본값 0
*/
container.setLayout(new BorderLayout(20, 20));
// button1은 북쪽에
// 겹치게 배치를 하면 어떻게 될까
container.add(button1, BorderLayout.NORTH);
container.add(button3, BorderLayout.NORTH);
// 실행시켜보면 나중에 생성된 버튼 하나만 나오는 것을 볼 수 있다.
// button2는 남쪽에
container.add(button2, BorderLayout.SOUTH);
// button3는 동쪽에
container.add(button4, BorderLayout.EAST);
// button5는 서쪽에
container.add(button5, BorderLayout.WEST);
// button6은 가운데에
container.add(button6, BorderLayout.CENTER);
// 3. 프레임에 컨테이너 올리기
add(container);
// 프레임 위치, 크기 지정
setBounds(200, 200, 300, 300);
// 프레임 x 버튼 유효화
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 프레임 보이기
setVisible(true);
}
public static void main(String[] args) {
new Ex19_BorderLayout(); // 생성자 호출
}
}
겹치게 놓는 경우 나중에 올린 버튼만 올라가는 것을 볼 수 있다.
GridLayout 배치관리자 예제
package sist;
import java.awt.*;
import javax.swing.*;
public class Ex20_GridLayout extends JFrame{
public Ex20_GridLayout() {
setTitle("GridLayout 배치관리자");
JPanel container = new JPanel();
// 컴포넌트 생성
JButton button1 = new JButton("1");
JButton button2 = new JButton("2");
JButton button3 = new JButton("3");
JButton button4 = new JButton("4");
JButton button5 = new JButton("5");
JButton button6 = new JButton("6");
JButton button7 = new JButton("7");
JButton button8 = new JButton("8");
JButton button9 = new JButton("9");
JButton button10 = new JButton("*");
JButton button11 = new JButton("0");
JButton button12 = new JButton("#");
// 2. 컨테이너에 컴포넌트 올리기
// 그리드레이아웃 관리자로 올리기
/*
형식) new GridLayout(행, 열)
new GridLayout(행, 열, 수평간격, 수직간격)
- 수평간격 : 좌우 컴포넌트 사이의 간격(픽셀단위), 기본값 0
- 수직간격 : 상하 컴포넌트 사이의 간격(픽셀단위), 기본값 0
*/
// 4행 3열짜리 GridLayout 생성
// 간격은 5픽셀씩 둠
container.setLayout(new GridLayout(4,3,5,5));
container.add(button1); container.add(button2); container.add(button3);
container.add(button4); container.add(button5); container.add(button6);
container.add(button7); container.add(button8); container.add(button9);
container.add(button10); container.add(button11); container.add(button12);
// 3. 프레임에 컨테이너 올리기
add(container);
// 프레임 위치, 크기 지정
setBounds(200, 200, 300, 300);
// 프레임 x 버튼 유효화
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 프레임 보이기
setVisible(true);
}
public static void main(String[] args) {
new Ex20_GridLayout();
}
}
'Back-End > Java' 카테고리의 다른 글
[Java] Class 클래스 (0) | 2021.09.30 |
---|---|
[Java] Swing - Event (0) | 2021.09.29 |
[Java] Swing - JComboBox, JList, JLable, JTextField, JTable, JTabbedPane, JMenu, ETC (0) | 2021.09.29 |
[Java] GUI(AWT, Swing) - JFrame, JButton, JCheckBox, JRadioButton, JToggleButton (0) | 2021.09.29 |
[JAVA] 시스템과 파일 입출력(Java.io) - Input, Output, Stream, Reader, Writer, File (0) | 2021.09.17 |
댓글