여러 컴포넌트를 가진 복잡한 GUI 만들기
컨텐트팬에 BorderLayout을 사용하면 5개의 컴포넌트만 출력 가능하고, GridLayout을 사용하면 격자 모양으로만 배치할 수 있는 등 컴포넌트의 개수와 배치 모양에 한계가 있습니다. 많은 컴포넌트을 배치하면서 다양한 모양의 GUI를 만들기 위해서는 여러 채널과 여러 배치관리자를 사용하면 됩니다.
여러 컴포넌트를 가진 GUI 만들기
import javax.swing.*;
import java.awt.*;
public class MultiplePanelEx extends JFrame {
public MultiplePanelEx() {
super("Mutiple Panels and Layouts"); // 타이틀
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane(); // 프레임으로부터 컨텐트팬 알아내기
c.setLayout(new BorderLayout()); // 켄텐트팬의 배치 관리자 BorderLayout
// 컨텐트팬에 2개의 패널(컨테이너) 부착
c.add(new NorthPanel(), BorderLayout.NORTH); // NORTH 영역에 NorthPanel 패널 부착
c.add(new CenterPanel(), BorderLayout.CENTER); // CENTER 영역에 CenterPanel 패널 부착
setSize(300, 300);
setVisible(true);
}
class NorthPanel extends JPanel { // 컨탠트팬의 NORTH 영역 패널
public NorthPanel() {
setBackground(Color.LIGHT_GRAY); // 배경색 설정
setLayout(new FlowLayout()); //FlowLayout 배치관리자 지정
add(new JButton("Open"));
add(new JButton("Read"));
add(new JButton("Close"));
}
}
class CenterPanel extends JPanel { // 컨텐트팬의 CENTER 영역 패널
private JLabel [] labels = {new JLabel("Hello"),
new JLabel("Java"), new JLabel("Love")}; // 3개의 JLabel을 가진 배열
public CenterPanel() {
setLayout(null); // 배치관리자 삭제, 절대 위치에 컴포넌트 삽입
for (int i = 0; i < labels.length; i++) {
int x = (int) (Math.random() * 200); // 0에서 200미만의 랜덤 정수
int y = (int) (Math.random() * 200); // 0에서 200미만의 랜덤 정수
labels[i].setLocation(x, y); // 랜덤한 위치에 JLabel 배치
labels[i].setSize(100, 20); // JLabel의 크기 지정
add(labels[i]); // JLabel을 이 패널(CenterPanel)에 부착
}
}
}
static public void main(String[] args) {
new MultiplePanelEx();
}
}
[실행결과]

'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 이벤트 객체 (0) | 2025.06.05 |
|---|---|
| 이벤트 기반 프로그래밍 (1) | 2025.06.05 |
| 배치관리자 없는 컨테이너 (2) | 2025.05.30 |
| GridLayout 배치관리자 (1) | 2025.05.27 |
| BorderLayout 배치 관리자 (1) | 2025.05.24 |