GroupLayout — 그룹 레이아웃 매니저
GroupLayout — 그룹 레이아웃 매니저
GroupLayout은 컴포넌트를 계층적으로 그룹화해 Container 안에 배치하는 LayoutManager입니다. 빌더 도구에서 활용하도록 설계되었지만 수동으로 작성할 수도 있습니다.
본문
public class GroupLayout extends Object implements LayoutManager2
GroupLayout은 컴포넌트를 계층적으로 그룹화해 Container에 배치하는 LayoutManager입니다. 빌더 도구에서 사용하도록 설계되었지만 수동 코딩도 가능합니다. 그룹화는 Group 클래스의 인스턴스로 수행됩니다. GroupLayout은 두 가지 유형의 그룹을 지원합니다. 순차(sequential) 그룹은 자식 요소를 하나씩 차례로 배치합니다. 병렬(parallel) 그룹은 자식 요소를 네 가지 방식 중 하나로 정렬합니다. 각 그룹은 임의 개수의 요소를 가질 수 있는데, 요소는 Group, Component 또는 gap입니다. gap은 최소·선호·최대 크기를 가진 보이지 않는 컴포넌트로 볼 수 있습니다. 또한 GroupLayout은 LayoutStyle에서 값을 가져오는 선호 간격(preferred gap)을 지원합니다. 요소는 스프링과 비슷합니다. 각 요소는 최소·선호·최대 크기로 지정된 범위를 가집니다. gap은 개발자가 지정한 범위나 LayoutStyle이 결정한 범위를 가집니다. 컴포넌트의 범위는 getMinimumSize, getPreferredSize, getMaximumSize 메서드로 결정됩니다. 또한 컴포넌트를 추가할 때 컴포넌트가 가진 범위 대신 사용할 특정 범위를 지정할 수 있습니다. 그룹의 범위는 그룹 유형에 따라 결정됩니다. ParallelGroup의 범위는 요소 범위의 최댓값이고, SequentialGroup의 범위는 요소 범위의 합입니다. GroupLayout은 각 축을 독립적으로 처리합니다. 즉 수평 축을 나타내는 그룹과 수직 축을 나타내는 그룹이 있습니다. 수평 그룹은 수평 축의 최소·선호·최대 크기와 포함된 컴포넌트의 x와 너비를 결정합니다. 수직 그룹은 수직 축의 최소·선호·최대 크기와 포함된 컴포넌트의 y와 높이를 결정합니다. 각 컴포넌트는 수평 그룹과 수직 그룹 양쪽에 존재해야 하며, 그렇지 않으면 레이아웃 시 또는 최소·선호·최대 크기 요청 시 IllegalStateException이 발생합니다.
createSequentialGroup
public GroupLayout.SequentialGroup createSequentialGroup()
SequentialGroup을 생성하고 반환합니다.
- 반환값: 새
SequentialGroup
createParallelGroup
public GroupLayout.ParallelGroup createParallelGroup()
Alignment.LEADING 정렬의 ParallelGroup을 생성하고 반환합니다. 더 일반적인 createParallelGroup(Alignment) 메서드의 커버 메서드입니다.
- 반환값: 새
ParallelGroup
createParallelGroup
public GroupLayout.ParallelGroup createParallelGroup(GroupLayout.Alignment alignment)
지정된 정렬의 ParallelGroup을 생성하고 반환합니다. 두 번째 인자에 true를 넘기는 더 일반적인 createParallelGroup(Alignment,boolean) 메서드의 커버 메서드입니다.
- 매개변수:
alignment- 그룹 요소의 정렬 - 반환값: 새
ParallelGroup - 예외:
IllegalArgumentException-alignment가null인 경우
createBaselineGroup
public GroupLayout.ParallelGroup createBaselineGroup(boolean resizable, boolean anchorBaselineToTop)
요소를 기준선(baseline)을 따라 정렬하는 ParallelGroup을 생성하고 반환합니다.
- 매개변수:
resizable- 그룹의 크기 조절 가능 여부 - 매개변수:
anchorBaselineToTop- 기준선을 그룹의 위 또는 아래에 고정할지 여부 - 반환값:
ParallelGroup
linkSize
public void linkSize(Component... components)
지정된 컴포넌트들이 선호·최소·최대 크기와 무관하게 같은 크기를 갖도록 강제합니다. 연결된 컴포넌트는 각 연결 컴포넌트의 선호 크기 중 최댓값을 부여받습니다. 예를 들어 선호 너비가 10과 20인 두 컴포넌트를 연결하면 둘 다 너비 20을 받습니다. 여러 번 사용해 임의 개수의 컴포넌트가 같은 크기를 공유하도록 할 수 있습니다. 연결된 컴포넌트는 크기 조절이 되지 않습니다.
- 매개변수:
components- 같은 크기를 가질Component들 - 예외:
IllegalArgumentException-components가null이거나null을 포함하는 경우
linkSize
public void linkSize(int axis, Component... components)
지정된 컴포넌트들이 지정된 축을 따라 선호·최소·최대 크기와 무관하게 같은 크기를 갖도록 강제합니다.
- 매개변수:
axis- 크기를 연결할 축.SwingConstants.HORIZONTAL또는SwingConstants.VERTICAL중 하나 - 매개변수:
components- 같은 크기를 가질Component들 - 예외:
IllegalArgumentException** -components가null이거나null을 포함하거나,axis가SwingConstants.HORIZONTAL또는SwingConstants.VERTICAL`이 아닌 경우
replace
public void replace(Component existingComponent, Component newComponent)
기존 컴포넌트를 새 컴포넌트로 교체합니다.
- 매개변수:
existingComponent-newComponent로 제거·교체할 컴포넌트 - 매개변수:
newComponent-existingComponent의 자리에 놓을 컴포넌트 - 예외:
IllegalArgumentException- 둘 중 하나가null이거나existingComponent가 이 레이아웃 매니저가 관리하지 않는 경우
setLayoutStyle
public void setLayoutStyle(LayoutStyle layoutStyle)
컴포넌트 사이의 선호 간격을 계산하는 데 사용할 LayoutStyle을 설정합니다. null 값은 LayoutStyle의 공유 인스턴스를 사용해야 함을 나타냅니다.
- 매개변수:
layoutStyle- 사용할LayoutStyle
getLayoutStyle
public LayoutStyle getLayoutStyle()
컴포넌트 사이의 선호 간격을 계산하는 데 사용되는 LayoutStyle을 반환합니다. setLayoutStyle에 지정된 값을 반환하며, null일 수 있습니다.
- 반환값: 컴포넌트 사이의 선호 간격을 계산하는 데 사용되는
LayoutStyle
preferredLayoutSize
public Dimension preferredLayoutSize(Container parent)
지정된 컨테이너의 선호 크기를 반환합니다.
- 매개변수:
parent- 선호 크기를 반환할 컨테이너 - 반환값:
parent의 선호 크기 - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우 - 예외:
IllegalStateException- 이 레이아웃에 추가된 컴포넌트 중 수평·수직 그룹 양쪽에 없는 것이 있는 경우
minimumLayoutSize
public Dimension minimumLayoutSize(Container parent)
지정된 컨테이너의 최소 크기를 반환합니다.
- 매개변수:
parent- 크기를 반환할 컨테이너 - 반환값:
parent의 최소 크기 - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우 - 예외: `IllegalStateException** - 컴포넌트 중 수평·수직 그룹 양쪽에 없는 것이 있는 경우
layoutContainer
public void layoutContainer(Container parent)
지정된 컨테이너를 배치합니다.
- 매개변수:
parent- 배치할 컨테이너 - 예외:
IllegalStateException- 추가된 컴포넌트 중 수평·수직 그룹 양쪽에 없는 것이 있는 경우
maximumLayoutSize
public Dimension maximumLayoutSize(Container parent)
지정된 컨테이너의 최대 크기를 반환합니다.
- 매개변수:
parent- 크기를 반환할 컨테이너 - 반환값:
parent의 최대 크기 - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우 - 예외:
IllegalStateException- 추가된 컴포넌트 중 수평·수직 그룹 양쪽에 없는 것이 있는 경우
getLayoutAlignmentX
public float getLayoutAlignmentX(Container parent)
x 축을 따른 정렬을 반환합니다. 컴포넌트가 다른 컴포넌트에 비해 어떻게 정렬되길 원하는지를 지정합니다. 값은 0과 1 사이의 숫자여야 하며, 0은 원점 정렬, 1은 원점에서 가장 먼 정렬, 0.5는 중앙 정렬을 나타냅니다.
- 매개변수:
parent- 이LayoutManager를 호스팅하는Container - 반환값: 정렬. 이 구현은
.5를 반환합니다 - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우
getLayoutAlignmentY
public float getLayoutAlignmentY(Container parent)
y 축을 따른 정렬을 반환합니다. 0은 원점 정렬, 1은 원점에서 가장 먼 정렬, 0.5는 중앙 정렬을 나타냅니다.
- 매개변수:
parent- 이LayoutManager를 호스팅하는Container - 반환값: 정렬. 이 구현은
.5를 반환합니다 - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우
invalidateLayout
public void invalidateLayout(Container parent)
레이아웃을 무효화해, 레이아웃 매니저가 캐시한 정보가 있다면 폐기해야 함을 나타냅니다.
- 매개변수:
parent- 이 LayoutManager를 호스팅하는Container - 예외:
IllegalArgumentException-parent가 이 레이아웃을 만들 때 쓴Container와 같지 않은 경우
toString
public String toString()
이 GroupLayout의 문자열 표현을 반환합니다. 이 메서드는 디버깅 목적으로 사용하도록 설계되었으며, 반환 문자열의 내용과 형식은 구현마다 다를 수 있습니다.
- 재정의:
Object클래스의toString - 반환값: 이
GroupLayout의 문자열 표현