Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 스크롤 가능한 JPanel 구현하는 방법 완벽 가이드

JPanel이란 무엇인가?

JPanelJComponent의 하위 클래스이며, JComponent는 다시 Container 클래스를 상속합니다. 따라서 JPanel 자체도 하나의 컨테이너(Container)로 동작합니다.

JPanel은 화면상의 빈 영역으로, 그 안에 다른 컴포넌트들을 배치하거나 심지어 다른 패널을 중첩해서 넣을 수도 있습니다. 이러한 유연성 덕분에 JPanel은 Java Swing GUI 개발에서 가장 많이 사용되는 기본 단위 중 하나입니다.

JPanel의 주요 특징

  • JPanel에는 텍스트 필드, 레이블(JLabel), 버튼(JButton), 체크박스(JCheckBox), 그리고 이미지까지 다양한 컴포넌트를 자유롭게 추가할 수 있습니다.
  • FlowLayout, GridLayout, BorderLayout 등 다양한 레이아웃 관리자(Layout Manager)를 활용하면 패널 안에 배치되는 컴포넌트들의 크기, 위치, 정렬 방식을 손쉽게 제어할 수 있습니다.
  • JPanel 클래스의 핵심 메서드로는 getAccessibleContext(), getUI(), updateUI(), paramString() 등이 있으며, 이를 통해 접근성 정보 조회나 UI 갱신 등의 작업을 수행할 수 있습니다.

JPanel에 스크롤 기능 추가하기

JPanel 자체에는 스크롤 기능이 내장되어 있지 않지만, 패널 객체를 JScrollPane에 감싸서 프레임에 추가하면 세로 및 가로 스크롤이 모두 지원되는 스크롤 가능한 패널을 간단하게 구현할 수 있습니다. JScrollPane은 내용이 뷰포트 크기를 초과할 때 자동으로 스크롤바를 표시해 주므로, 많은 양의 컴포넌트를 담는 화면을 만들 때 매우 유용합니다.

예제 코드

아래 예제는 10행 4열의 GridLayout을 가진 JPanel을 생성하고, 여기에 40개의 JLabel을 추가한 뒤 JScrollPane으로 감싸서 스크롤 기능을 구현한 전체 코드입니다.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JScrollablePanelTest extends JFrame {
    public JScrollablePanelTest() {
        setTitle("JScrollablePanel Test");
        setLayout(new BorderLayout());
        JPanel panel = createPanel();
        // 패널을 JScrollPane으로 감싸 스크롤 기능 활성화
        add(BorderLayout.CENTER, new JScrollPane(panel));
        setSize(375, 250);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static JPanel createPanel() {
        JPanel panel = new JPanel();
        // 10행 4열, 수평/수직 간격 10픽셀의 그리드 레이아웃 설정
        panel.setLayout(new GridLayout(10, 4, 10, 10));
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 4; j++) {
                JLabel label = new JLabel("label " + i + ", " + j);
                label.setFont(new Font("Arial", Font.PLAIN, 20));
                panel.add(label);
            }
        }
        return panel;
    }

    public static void main(String[] args) {
        new JScrollablePanelTest();
    }
}

실행 결과

프로그램을 실행하면 아래와 같이 40개의 레이블이 그리드 형태로 배치된 창이 나타나며, 창 크기보다 내용이 많기 때문에 오른쪽과 아래쪽에 스크롤바가 자동으로 생성되어 전체 컴포넌트를 탐색할 수 있습니다.

Java에서 스크롤 가능한 JPanel 구현하는 방법 완벽 가이드

정리

핵심은 단 한 줄입니다. new JScrollPane(panel)처럼 JPanel을 JScrollPane의 인자로 전달하기만 하면 됩니다. 필요에 따라 setVerticalScrollBarPolicy() 또는 setHorizontalScrollBarPolicy() 메서드를 사용해 스크롤바 표시 정책(항상 표시, 필요 시에만 표시, 표시 안 함)을 세부적으로 조정할 수도 있습니다. 이 방법은 데이터 목록, 설정 화면, 이미지 갤러리 등 콘텐츠가 화면을 벗어나는 모든 Swing 애플리케이션에서 폭넓게 활용됩니다.