< 대표적인 배치 관리자 ( =레이아웃 관리자 ) >
: Swing에서는 UI 컴포넌트들을 어떻게 배치할지 결정하는 배치(레이아웃) 관리자를 제공한다.
각각의 배치 관리자는 컴포넌트를 배치하는 고유 방식을 가지고 있기에, 상황에 맞게 적절한 레이아웃 관리자를 선택하여 사용하면 된다.
- FlowLayout
: UI 요소들을 간단하게 나열할 때 적합한 관리자
- 컨테이너에 컴포넌트가 들어오면 순서대로 왼쪽에서 오른쪽으로 배치
- 더 이상 배치할 공간이 없을 경우 아래 줄로 내려와 왼쪽부터 다시 배치
📄예시 코드
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(new JButton("버튼 1"));
panel.add(new JButton("버튼 2"));
panel.add(new JButton("버튼 3"));
- BorderLayout
: 상단에 메뉴, 하단에 상태 표시줄, 중앙에 주요 내용을 배치하는 구조에 적합한 관리자
- 컴테이너의 공간을 동(East), 서(West), 남(South), 북(North), 중앙 영역(Center)의 다섯 개의 영역으로 나누고 응용프로그램에서 지정한 영역에 컴포넌트를 배치한다.
- 컴포넌트를 배치하는 배치관리자
(따라서, 만약 배치 관리자를 지정하지 않고 버튼을 프레임에 추가하면 버튼이 전체화면이 된다.)
📄예시 코드
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JButton("북쪽"), BorderLayout.NORTH);
panel.add(new JButton("남쪽"), BorderLayout.SOUTH);
panel.add(new JButton("동쪽"), BorderLayout.EAST);
panel.add(new JButton("서쪽"), BorderLayout.WEST);
panel.add(new JButton("중앙"), BorderLayout.CENTER);
- GridLayout
: 계산기, 체스보드와 같이 정렬된 형태로 UI를 배치할 때 적합한 관리자
- 컨테이너의 공간을 응용프로그램에서 설정한 동일 크기의 2차원 그리드로 나눈다.
- 컴포넌트를 들어오는 순서대로 좌에서 우로, 그리고 위에서 아래로 순서대로 배치
📄예시 코드
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2, 3)); // 2행 3열
panel.add(new JButton("1"));
panel.add(new JButton("2"));
panel.add(new JButton("3"));
panel.add(new JButton("4"));
panel.add(new JButton("5"));
panel.add(new JButton("6"));
- CardLayout
: 탭, 설정 화면 등에서 자주 사용되는 관리자
- 컴포넌트를 쌓아서 배치할 수 있는 레이아웃
- 컴포넌트의 크기는 컨테이너의 크기와 동일하게 설정된다.
📄예시 코드
// CardLayout 구조
JPanel cardPanel = new JPanel(new CardLayout());
cardPanel.add(new JPanel(), "Card1"); // 첫 번째 카드
cardPanel.add(new JPanel(), "Card2"); // 두 번째 카드
// 카드 전환 (next, previous 등)
CardLayout cl = (CardLayout) cardPanel.getLayout();
cl.next(cardPanel); // 다음 카드로 전환
- AbsoluteLayout
: 픽셀 단위로 위치를 정확하게 설정해야 하는 특성과 유지보수가 어려운 특성이 있다.
- 임의로 위치를 지정하여 컴포넌트를 배치할 수 있다.
📄예시 코드
// AbsoluteLayout 구조
JFrame frame = new JFrame();
frame.setLayout(null); // AbsoluteLayout 사용
JButton button = new JButton("버튼");
button.setBounds(50, 50, 100, 30); // 위치와 크기 설정
frame.add(button);
'Framework & Library > Swing' 카테고리의 다른 글
[Swing] 사용자 정의 효과음 메서드 (5) | 2024.09.18 |
---|---|
[Swing] JOptionPane 팝업 창 클래스 (0) | 2024.09.17 |
[Swing] 이벤트 처리 (Event Handling) (0) | 2024.09.05 |
[Swing] 기초 컴포넌트의 생성자와 메서드 (1) | 2024.09.05 |
[Swing] 자바 GUI 스윙 (Swing) (1) | 2024.09.03 |