# Layout Manager

* `component.setMinimumSize()` / `component.setMaximumSize()` / `component.setPreferredSize()`

## Border Layout

* PAGE_START
* PAGE_END
* LINE_START
* LINE_END
* CENTER

* `container.add(Component,BorderLayout.CENTER)`
* `setHGap(int)` / `setVGap(int)`

## Box Layout

* LINE_AXIS
* PAGE_AXIS

### Box.Filler

* `Box.createRigidArea()` : 컴포넌트 사이에 고정된 크기의 공간을 만들 때 사용합니다.
* `Box.createHorizontalGlue()` / `Box.createVerticalGlue()` : 컴포넌트 사이에 최대한의 빈 공간을 만들고자 할 때 사용합니다.
* `Box.createHorizontalStrut()` / `Box.createVerticalStrut()` : Strut보다는 RigidArea를 사용
* `new Box.Filler(Dimension,Dimension,Dimension)` : 최소, 희망, 최대 크기.

* `changeShape(Dimension,Dimension,Dimension)` : 레이아웃도 따라서 변경된다.

## Card Layout

* `container.add(Component,String)`

* `first(Container)` / `last(Container)`
* `next(Container)` / `previous(Container)`
* `show(Container,String)`

## Flow Layout

JPanel의 기본 레이아웃 매니저입니다.

* LEADING
* CENTER
* TRAILING

* `setHGap(int)` / `setVGap(int)`
* `setAlignment(int)` : FlowLayout.LEADING | CENTER | TRAILING

## Grid Bag Layout

* `add(Component,GridBagConstraints)`

### GridBagConstraints
* gridx, gridy : 컴포넌트가 위치할 열과 행의 좌표를 지정한다. RELATIVE를 지정하면 이전 컴포넌트의 오른쪽이나 아래에 놓는다.
* gridwidth, gridheight : 컴포넌트가 몇 칸을 차지할지를 지정한다. 기본 값은 1이다. 열이나 행의 마지막 컴퍼넌트에는 REMAINDER를 사용한다.
* fill : 컴포넌트 보다 큰 공간을 어떻게 채울지를 지정한다. NONE | HORIZONTAL | VERTICAL | BOTH
* ipadx, ipady : 컴포넌트 안쪽의 패딩 크기를 지정한다.
* insets : 컴포넌트 외부의 패딩 크기를 지정한다.
* anchor : CENTER | PAGE_START | PAGE_END | LINE_START | LINE_END | FIRST_LINE_START | FIRST_LINE_END | LAST_LINE_END | LAST_LINE_START
* weightx, weighty : 컴포넌트가 어느 정도의 크기를 가질지 가중치를 지정한다. 0 ~ 1사이의 값을 지정하며, 기본값은 0이다.


## Grid Layout

* `GridLayout(int,int)` : 열과 행의 크기를 지정한다.

## Group Layout

* Horizontal group / Vertical group
* Sequential group / Parallel group

* `addPreferredGap()` / `addContainerGap()` : RELATED | UNRELATED | INDENT
* `setAutoCreateGaps(boolean)` / `setAutoCreateContainerGaps(boolean)`

## Spring Layout

* NORTH
* SOUTH
* EAST
* WEST
* BASELINE
* HORIZONTAL_CENTER
* VERTICAL_CENTER


* `getConstraints(Component)`
* `Spring getConstraint(String,Component)`
* `putConstraint(String,Component,int,String,Component)` / `putConstraint(String,Component,Spring,String,Component)`

### SpringLayout.Constraints

* `getX()` / `getY()` / `getWidth()` / `getHeight()` / `setX()` / `setY()` / `setWidth()` / `setHeight()`
* `getConstraint(String)` / `setConstraint(String,Spring)`

### Spring

* `constant(int)` / `constant(int,int,int)`
* `Spring.sum(Spring,Spring)` / `Spring.max(Spring,Spring)` / `Spring.minus(Spring,Spring)`
* `getValue()` / `setValue(int)`