back/Java
KH 26일차(CardLayout, GridLayout)
devel0per
2022. 8. 4. 20:53
1) 레이아웃 매니저를 이용해서 컴포넌트 배치
- 컨테이너에 포함된 컴포넌트의 배치를 자동관리
- 종류: BorderLayout, FlowLayout, GridLayout, CardLayout, GridbagLayout
- 기본형: FlowLayout(Panel, Applet), BorderLayout(Window, Dialog, Frame)
2) BorderLayout
- 5개의 영역으로 분리(각 영역당 컴포넌트 1개 삽입 가능, Panel 사용하면 여러개 가능)
- 생성자: BorderLayout(int hgap, int vgap) // 좌우 간격, 상하 간격(미선택 가능)
3) FlowLayout
- 워드프로세서와 같이 맞춤 정렬 가능(좌, 중간, 우)
- 생성자: FlowLayout(int align, int hgap, int vgap) // 정렬방법, 좌우 간격, 상하 간격
*기본생성자 선택시 가운데 정렬, 상하좌우 5픽셀
4) GridLayout
- 컴포넌트를 임의의 행렬로 배치
- 생성자: GridLayout(int row, int col, int hgap, int vgap) // 행, 열, 좌우 간격, 상하 간격
package ja_0804;
import java.awt.Button;
import java.awt.Choice;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.List;
public class GridLayout_2 extends Frame{
public GridLayout_2(String title) {
super(title);
setLayout(new GridLayout(3, 2));
List Mountain = new List(6, true);
Mountain.add("설악");
Mountain.add("치악");
Mountain.add("백두");
Mountain.add("청명");
Choice flower = new Choice();
flower.add("해바라기");
flower.add("장미");
flower.add("진달래");
flower.add("개나리");
add(new Button("Button1"));
add(Mountain);
add(flower);
add(new TextArea("아름다운 사람", 5, 15));
add(new TextField("TextField"));
add(new Panel());
setSize(200, 200);
setVisible(true);
}
public static void main(String[] args) {
new GridLayout_2("GridLayout_2 TEST");
}
}
5) CardLayout
- 여러 컨테이너를 슬라이드처럼 표시(앨범 혹은 퀴즈 프로그램에 사용)
- 생성자: CardLayout(int hgap, int vgap) 좌우 간격, 상하 간격
package ja_0804;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class CardLayout_1 extends Frame{
CardLayout card = new CardLayout();
Panel[] panel = new Panel[5];
Color[] color = {Color.red, Color.blue, Color.yellow, Color.green, Color.cyan};
int x, y;
public CardLayout_1(String str) {
super(str);
setLayout(card);
/*
* CardLayout
* . 카드 레이아웃은 한개의 컴포넌트를 한개의 컴포넌트로 표현하는 방법입니다.
* 여러개의 컴포넌트를 여러개의 카드에 배치하는 경우에 각 카드에 이름을 붙여 사용합니다.
* 해당 카드를 출력할 때, 해당 카드의 이름을 show() 메소드로 출력하거나, first(), last(), next() 등의
* 메소드를 이용해 화면을 바꿔가며 출력할 수 있습니다.
*
* . 카드 레이아웃을 사용하는 과정
* . setLayout() 메소드를 이용해 카드 레이아웃 등록
* . 카드 레이아웃에 등록할 Panel을 만든다.
* . add () 메소드를 이용해 패널을 컨테이너에 추가한다.
* . 원하는 카드를 보여주기 위해서 show(), next(), first(), last() 메소드를 사용한다
*
*
*
*/
MouseHandle mouse = new MouseHandle();
for(int i = 0; i < 5; i++) {
panel[i] = new Panel();
panel[i].setBackground(color[i]);
panel[i].addMouseListener(mouse);
add((new Integer(i)).toString(), panel[i]);
}
setSize(300, 300);
setVisible(true);
}
public class MouseHandle extends MouseAdapter{ // 마우스 이벤트 처리
public void mouseClicked(MouseEvent e) { // 마우스가 클릭될 때
card.next(CardLayout_1.this);
System.out.println(e.toString());
}
}
public static void main(String[] args) {
new CardLayout_1("CardLayout 예제");
}
}