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

Java OverlayLayout 완벽 가이드: 컴포넌트를 겹쳐 배치하는 방법과 핵심 메서드

OverlayLayout이란?

  • OverlayLayoutObject 클래스를 기반으로 하는 스윙(Swing) 레이아웃 관리자로, 여러 컴포넌트를 서로 겹쳐 쌓듯이 배치하고 각 컴포넌트에 지정된 정렬(alignment) 값을 기준으로 상대적인 위치를 결정합니다.
  • 컴포넌트마다 서로 다른 크기를 지정하면, 크기가 작은 컴포넌트가 큰 컴포넌트 위에 겹쳐 있더라도 모든 컴포넌트를 화면에서 확인할 수 있습니다.
  • 컴포넌트를 다른 컴포넌트 위 또는 프레임 내 원하는 위치에 정렬하려면 setAlignmentX()setAlignmentY() 메서드를 사용합니다. 매개변수는 0.0f부터 1.0f 사이의 float 값이며, OverlayLayout은 기본적으로 최대값인 1.0f를 사용합니다.
  • OverlayLayout의 주요 메서드로는 addLayoutComponent(), getTarget(), invalidateLayout(), maximumLayoutSize() 등이 있습니다.

사용 시 주의할 점

OverlayLayout을 올바르게 동작시키려면 컴포넌트가 겹칠 수 있음을 스윙에게 알려주어야 합니다. 이를 위해 패널에서 isOptimizedDrawingEnabled() 메서드를 오버라이드하여 false를 반환하도록 설정해야 하며, 그렇지 않으면 화면이 제대로 갱신되지 않을 수 있습니다.

예제 코드

import java.awt.*;
import javax.swing.*;
import javax.swing.OverlayLayout;
public class OverlayLayoutTest extends JFrame {
    public OverlayLayoutTest() {
        setTitle("OverlayLayout Test");
        JPanel panel = new JPanel() {
            public boolean isOptimizedDrawingEnabled() {
                return false;
            }
        };
        LayoutManager overlay = new OverlayLayout(panel);
        panel.setLayout(overlay);
        JButton button = new JButton("Small");
        button.setMaximumSize(new Dimension(75, 50));
        button.setBackground(Color.white);
        panel.add(button);
        button = new JButton("Medium Btn");
        button.setMaximumSize(new Dimension(125, 75));
        button.setBackground(Color.lightGray);
        panel.add(button);
        button = new JButton("Large Button");
        button.setMaximumSize(new Dimension(200, 100));
        button.setBackground(Color.orange);
        panel.add(button);
        add(panel, BorderLayout.CENTER);
        setSize(400, 300);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }
    public static void main(String args[]) {
        new OverlayLayoutTest();
    }
}

실행 결과

위 코드를 실행하면 크기가 서로 다른 세 개의 버튼(Small, Medium Btn, Large Button)이 지정된 정렬 값에 따라 중앙을 기준으로 겹쳐진 형태로 표시됩니다. 가장 큰 버튼이 아래에 깔리고, 작은 버튼들이 그 위에 순차적으로 배치되어 OverlayLayout의 겹침 배치 특성을 직관적으로 확인할 수 있습니다.

Java OverlayLayout 완벽 가이드: 컴포넌트를 겹쳐 배치하는 방법과 핵심 메서드