JPanel은 JComponent 클래스의 하위 클래스로, Java에서 보이지 않는(invisible) 컴포넌트입니다. JPanel의 기본 레이아웃은 FlowLayout이며, 별도의 설정 없이도 컴포넌트들이 왼쪽에서 오른쪽으로 순서대로 배치됩니다.
JPanel에는 버튼, 텍스트 필드, 레이블, 테이블, 리스트, 트리 등 대부분의 Swing 컴포넌트를 자유롭게 추가할 수 있습니다.
add() 메서드로 여러 하위 패널 추가하기
메인 패널에 여러 개의 하위 패널(sub-panel)을 추가하려면 Container 클래스가 제공하는 add() 메서드를 사용하면 됩니다. 이 메서드는 전달된 컴포넌트를 해당 컨테이너의 마지막에 추가하고, 추가된 컴포넌트 자체를 반환합니다.
문법(Syntax)
public Component add(Component comp)
예제 코드(Example)
아래 예제는 하나의 메인 패널 안에 두 개의 서로 다른 색상을 가진 하위 패널을 배치하는 방법을 보여줍니다. 메인 패널은 GridLayout(3, 1)을 사용해 세로 방향으로 구역을 나누어 하위 패널들이 정돈되게 배치됩니다.
import java.awt.*;
import javax.swing.*;
public class MultiPanelTest extends JFrame {
private JPanel mainPanel, subPanel1, subPanel2;
public MultiPanelTest() {
setTitle("MultiPanel Test");
// 메인 패널 생성 및 레이아웃 설정
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(3, 1));
mainPanel.add(new JLabel("Main Panel", SwingConstants.CENTER));
mainPanel.setBackground(Color.white);
mainPanel.setBorder(BorderFactory.createLineBorder(Color.black, 1));
// 하위 패널 1
subPanel1 = new JPanel();
subPanel1.add(new JLabel("Panel One", SwingConstants.CENTER));
subPanel1.setBackground(Color.red);
// 하위 패널 2
subPanel2 = new JPanel();
subPanel2.setBackground(Color.blue);
subPanel2.add(new JLabel("Panel Two", SwingConstants.CENTER));
// 메인 패널에 하위 패널들 추가
mainPanel.add(subPanel1);
mainPanel.add(subPanel2);
add(mainPanel);
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new MultiPanelTest();
}
}실행 결과(Output)
프로그램을 실행하면 흰색 배경의 메인 패널 상단에 "Main Panel" 레이블이 표시되고, 그 아래로 빨간색 배경의 "Panel One"과 파란색 배경의 "Panel Two" 하위 패널이 세로로 정렬되어 나타납니다.

핵심 정리
- JPanel은 JComponent의 하위 클래스로, 다른 컴포넌트들을 담는 컨테이너 역할을 합니다.
- JPanel의 기본 레이아웃은 FlowLayout이며, 필요에 따라 GridLayout, BorderLayout 등으로 변경할 수 있습니다.
- Container 클래스의 add() 메서드를 사용하면 하나의 패널에 여러 하위 패널을 손쉽게 추가할 수 있습니다.
- 각 패널마다 setBackground(), setBorder() 등을 활용해 시각적으로 구분할 수 있습니다.