사용자가 마우스와 키보드로 상호작용하는 윈도우 그래픽 화면을 만드는 자바 GUI(Graphical User Interface) 스윙(Swing) 프로그래밍을 배웁니다.
1. GUI Swing 용어 사전 (Glossary)
- Container (컨테이너): 다른 GUI 컴포넌트 부품들을 화면 내에 탑재할 수 있는 창 그릇입니다. (예:
JFrame,JPanel,JDialog) - Component (컴포넌트): 화면에 독립적으로 표시되는 시각적 부품 요소입니다. (예:
JButton,JLabel,JTextField) - Layout Manager (레이아웃 매니저): 컨테이너 내부에서 컴포넌트들의 위치와 크기를 자동으로 배치해 주는 객체입니다. (
FlowLayout,BorderLayout,GridLayout)
2. 주요 레이아웃 매니저 3종 비교
- FlowLayout: 컴포넌트를 왼쪽에서 오른쪽으로, 공간이 없으면 다음 줄로 배치하는 기본 레이아웃.
- BorderLayout: 컨테이너를 동(East), 서(West), 남(South), 북(North), 중앙(Center) 5개 구역으로 분할 배치.
- GridLayout: 컨테이너를 $N \times M$ 형태의 바둑판 모양 격자 구조로 균등 분할 배치.
3. Swing 윈도우 창 띄우기 실습 예제
import javax.swing.*;
import java.awt.*;
public class MyFirstSwingFrame extends JFrame {
public MyFirstSwingFrame() {
setTitle("DAVHAVE GUI Swing 창");
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 창 닫기 시 프로세스 종료
setLayout(new BorderLayout()); // 레이아웃 지정
// 컴포넌트 생성 및 배치
JLabel label = new JLabel("자바 Swing GUI 상단 제목", SwingConstants.CENTER);
JButton btn = new JButton("클릭하세요");
add(label, BorderLayout.NORTH);
add(btn, BorderLayout.CENTER);
setVisible(true); // 윈도우 창 화면 표시
}
public static void main(String[] args) {
new MyFirstSwingFrame();
}
}
4. 자주 묻는 질문 (Q&A)
Q. 컴포넌트를 원하는 절대 좌표(x, y) 위치에 직접 배치하려면?
A. setLayout(null); 로 레이아웃 매니저를 제거한 뒤, 각 컴포넌트의 setBounds(x, y, width, height); 메소드를 직접 호출하면 됩니다.