컴포넌트(Components)들을 격자 형식으로 배치하면서, 컴포넌트의 위치, 크기, 상대적인 크기의 비율 등에 관한 정보를 설정할 수 있다. 보통 GridBagLayout 클래스를 사용할 때 같이 사용되는 것이 GridBagConstraints 클래스 객체이다. GridBagConstraints 객체는 생성자와 필드(속성, 변수)로만 구성되어 있으며, GridBagLayout으로 설정된 컨테이너에 부착할 컨포넌트의 속성을 정의한다.
[ 대표적인 GridBagConstraints 클래스 속성 ]
int gridx : 컴포넌트가 위치할 격자의 위치 중 column을 나타냄(행)
int gridy : 컴포넌트가 위치할 격자의 위치 중 row를 나타냄(열)
int gridwidth : 컴포넌트가 가로로 몇 개의 셀을 차지 할 것인가를 나타냄
int gridheight : 컴포넌트가 세로로 몇 개의 쎌을 차지 할 것인가를 나타냄
int weightx , int weighty : 다른 행, 열들과 비교하여 행과 열의 비를 결정함.
fill : fill변수는 컴포넌트가 셀 안에서 늘어나는 방향을 결정한다. default값은 NONE이다.
GridBagConstraints.BOTH : 컴포넌트가 상하, 좌우 모두 늘어나게 한다.
GridBagConstraints.HORIZONTAL : 컴포넌트가 좌우로 늘어나게 한다.
GridBagConstraints.VERTICAL : 컴포넌트가 상하로 늘어나게 한다.
GridBagConstraints.NONE : 컴포넌트가 최소의 크기로 보여짐
GridBagLayout 클래스 생성자
GridBagLayout() : 레이아웃 매니저를 생성함
GridBagLayout 클래스 주요 메소드
setConstraints() : 컨테이너 제약을 설정
addComponent() : 컴포넌트를 레이아웃에 추가
maximumLayoutSize() : 컨테이너의 최대 크기를 반환
minmumLayoutSize() : 컨테이너의 최소 크기를 반환
[ 사용예제 ]
/*
* Subject : GridBagLayout 에 대한 예제
* 작성일 : 2009. 01. 29
* GridBagLayout과 GridBagConstraints에 대해 알아보기
*/
import java.awt.*;
import java.awt.event.*;
public class Simulator extends Frame {
private Button b;
private GridBagLayout gridbag_layout;
private GridBagConstraints gridbag_con;
public Simulator() {
gridbag_layout = new GridBagLayout();
setLayout(gridbag_layout);
gridbag_con = new GridBagConstraints();
for ( int i = 0; i < 5; i++){
for( int j = 0; j < 5; j++){
String s = ""+i+","+""+j+"";
b = new Button(s);
gridbag_con.fill = GridBagConstraints.BOTH;
addComponent(b, i, j, 1, 1, 0, 0);
}
}
}
public void addComponent(Component c, int col, int row, int w, int h, int wx, int wy){
/* set gridx and gridy */
gridbag_con.gridx = col;
gridbag_con.gridy = row;
/* set gridwidth and gridheight */
gridbag_con.gridwidth = w;
gridbag_con.gridheight = h;
gridbag_con.weightx = wx;
gridbag_con.weighty = wx;
/* set constrints */
gridbag_layout.setConstraints(c, gridbag_con);
add(c);
}
public static void main(String[] args) {
Simulator s = new Simulator();
s.setTitle("GridBag_Test");
s.setSize(300,200);
s.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
s.show();
}
}
[ 결 과 ] - addComponent(b, i, j, 1, 1, 1, 1); 일 경우
addComponent(b, i, j, 1, 1, 0, 0); 일 경우
※ TIP : GridBag 레이아웃은 분명 강력한 레이아웃이다. 하지만 GridBag 레이아웃을 사용하여 복잡한 레이아웃을 표현하기 보다는 표시 영역을 분할하는 패널을 몇 가지 배치하여 각 패널에 컴포넌트를 배치하는 것이 더 간단하고 정확할 때가 있다.
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
컨테이너(Container) (0) | 2010.08.29 |
---|---|
자바 GUI(Graphic User Interface) 프로그래밍 (0) | 2010.08.29 |
JTable 컴포넌트 클래스 (0) | 2010.07.11 |
메뉴(Menu) 컴포넌트 클래스 (0) | 2010.07.11 |
자바 응용 프로그램 제작시 외부라이브러리와 첨부파일 관계 (0) | 2010.07.10 |