# 버튼

## AbstractButton
* `getAction()` / `setAction(Action)`
* `getText()` / `setText(String)`
* `getIcon()` / `setIcon(Icon)`
* `getDisabledIcon()` / `setDisabledIcon(Icon)`
* `getPressedIcon()` / `setPressedIcon(Icon)`
* `getSelectedIcon()` / `setSelectedIcon(Icon)`
* `getDisabledSelectedIcon()` / `setDisabledSelectedIcon(Icon)`
* `getRolloverIcon()` / `setRolloverIcon(Icon)`
* `getRolloverSelectedIcon()` / `setRolloverSelectedIcon(Icon)`
* `isRolloverEnabled()` / `setRolloverEnabled(boolean)`

* `getHorizontalAlignment()` / `setHorizontalAlignment(int)` : AbstractButton의 상수를 사용. CENTER | RIGHT | LEFT | LEADING | TRAILING
* `getVerticalAlignment()` / `setVerticalAlignment(int)` : CENTER | TOP | BOTTOM
* `getMargin()` / `setMargin(Insets)`
* `isFocusPainted()` / `setFocusPainted(boolean)`
* `isBorderPainted()` / `setBorderPainted(boolean)`
* `getIconTextGap()` / `setIconTextGap(int)`

* `getMnemonic()` / `setMnemonic(int)` : KeyEvent의 상수를 사용
* `getDisplayedMnemonicIndex()` / `setDisplayedMnemonicIndex(int)`
* `getActionCommand()` / `setActionCommand(String)`
* `addActionListener()` / `removeActionListener()`
* `addItemListener()` / `removeItemListener()`
* `isSelected()` / `setSelected(boolean)`
* `doClick()` / `doClick(int)` : 버튼을 클릭한 시간을 밀리초 단위로 지정할 수도 있다.
* `getMultiClickThreshhold()` / `setMultiClickThreshhold(long)` : 지정 시간 이내의 이벤트는 중복으로 무시한다.

## JButton

## JCheckBox

## JToggleButton

## 버튼 그룹 - ButtonGroup
* `add(AbstractButton)` / `remove(AbstractButton)`
* `clearSelection()`

```java
// 버튼에 할당된 버튼 그룹을 가져오려는 경우
ButtonGroup group = ((DefaultButtonModel)button.getModel()).getGroup();
```


## Action
### AbstractAction

* `isEnabled()` / `setEnabled(boolean)`
* `getValue(String)` / `putValue(String,Object)`
    * ACCELERATOR_KEY : KeyStroke
    * ACTION_COMMAND_KEY : String
    * LONG_DESCRIPTION
    * MNEMONIC_KEY
    * NAME
    * SHORT_DESCRIPTION
    * SMALL_ICON