GridLayout은 컨테이너를 테이블처럼 행과 열로 나누어 컴포넌트를 배치한다. 여기에 추가되는 컴포넌트들은 모두 같은 크기로 나누어지며, 컨테이너의 크기를 변경하면 각 영역이 모두 같은 비율로 커지거나 작아지는 성질을 갖고 있다.
특징 : 화면을 꽉 채우는 특징이 있다.
Frame에 Button이 추가될 때 어떤 순서로 GridLayout의 영역에 추가되는지 쉽게 알 수 있을 것이다.
첫번째 행의 열들을 모두 채운 후에 그 아래 행의 열들을 채운다. 이와 같은 방식으로 컴포넌트들이 추가되게 된다.
그리고 , 오른쪽의 그림은 실행 후 Frame의 크기를 늘린 것인데, 늘어난 후에도 각 영역의 Button 들이 모두 같은 크기를 유지하는 것을 알 수 있다.(각 영역은 서로 다른 크기로 지정될 수 있으며, 인접한 열 또는 행으로의 확장이 가능하다.)
package ch01;
import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GridLayoutEx01 extends JFrame {
// ArrayList 사용법 숙지
private String[] strArr = { "가", "나", "다", "라" };
private ArrayList<JButton> buttons = new ArrayList<>();
public GridLayoutEx01() {
initData();
setInitLayout();
}
private void initData() {
setTitle("그리드 레이아웃 연습");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
for (int i = 0; i < strArr.length; i++) {
buttons.add(new JButton(strArr[i]));
}
// gridLayout = new GridLayout(2,3);
}
private void setInitLayout() {
setVisible(true);
// setLayout : JFram의 배치 관리자 지정
setLayout(new GridLayout(2, 3)); // 화면을 꽉 채우는 특징이 있다.
for (int i = 0; i < strArr.length; i++) {
add(buttons.get(i));
}
// add(button1); // 버튼을 화면에 배치 add사용
// add(button2);
// add(button3);
// add(button4);
// add(button5);
// add(button6);
}
public static void main(String[] args) {
new GridLayoutEx01();
}
}
'개발일지 > 자바' 카테고리의 다른 글
(Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 2 (0) | 2022.09.14 |
---|---|
(Image Class, inner Class 활용), 이미지 파일 불러오는 법 - 1 (0) | 2022.09.14 |
BorderLayout(배열, ArrayList활용) (0) | 2022.09.13 |
FlowLayout(ArrayList 활용) (0) | 2022.09.13 |
FlowLayout (배열 활용) (0) | 2022.09.13 |
댓글