add user agent parser and update build configuration
This commit is contained in:
166
docs/swing/ComboBox, JList.md
Normal file
166
docs/swing/ComboBox, JList.md
Normal file
@@ -0,0 +1,166 @@
|
||||
# **Swing의 `JComboBox`, `JList` 및 관련 클래스 정리**
|
||||
|
||||
## **1. 주요 메서드 정리**
|
||||
|
||||
### **(1) `JComboBox` 메서드**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------------------|
|
||||
| `addItem(E item)` | 콤보박스에 항목 추가 |
|
||||
| `removeItem(Object item)` | 특정 항목 제거 |
|
||||
| `removeItemAt(int index)` | 지정한 인덱스의 항목 제거 |
|
||||
| `removeAllItems()` | 모든 항목 제거 |
|
||||
| `setSelectedItem(Object item)` | 특정 항목을 선택 상태로 설정 |
|
||||
| `getSelectedItem()` | 현재 선택된 항목 반환 |
|
||||
| `setSelectedIndex(int index)` | 특정 인덱스를 선택 상태로 설정 |
|
||||
| `getSelectedIndex()` | 현재 선택된 항목의 인덱스 반환 |
|
||||
| `setEditable(boolean b)` | 콤보박스를 편집 가능하도록 설정 |
|
||||
| `isEditable()` | 편집 가능 여부 확인 |
|
||||
| `addActionListener(ActionListener l)` | 항목 선택 시 이벤트 리스너 추가 |
|
||||
| `addItemListener(ItemListener l)` | 아이템이 선택 또는 변경될 때 이벤트 리스너 추가 |
|
||||
|
||||
---
|
||||
|
||||
### **(2) `JList` 메서드**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------------------|
|
||||
| `setListData(E[] listData)` | 리스트 데이터를 설정 |
|
||||
| `getSelectedValue()` | 현재 선택된 값 반환 |
|
||||
| `getSelectedValuesList()` | 여러 개의 선택된 값 리스트 반환 |
|
||||
| `setSelectedIndex(int index)` | 특정 인덱스를 선택 |
|
||||
| `setSelectedIndices(int[] indices)` | 여러 개의 항목을 선택 |
|
||||
| `getSelectedIndex()` | 현재 선택된 인덱스 반환 |
|
||||
| `getSelectedIndices()` | 선택된 인덱스 배열 반환 |
|
||||
| `setSelectionMode(int mode)` | 선택 모드 설정 (`SINGLE_SELECTION`, `MULTIPLE_INTERVAL_SELECTION` 등) |
|
||||
| `addListSelectionListener(ListSelectionListener l)` | 항목 선택 변경 시 이벤트 리스너 추가 |
|
||||
|
||||
---
|
||||
|
||||
### **(3) `DefaultComboBoxModel<E>` (콤보박스 데이터 모델)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------------------|
|
||||
| `addElement(E item)` | 모델에 항목 추가 |
|
||||
| `insertElementAt(E item, int index)` | 특정 위치에 항목 삽입 |
|
||||
| `removeElement(E obj)` | 특정 항목 제거 |
|
||||
| `removeElementAt(int index)` | 특정 인덱스의 항목 제거 |
|
||||
| `getElementAt(int index)` | 특정 인덱스의 항목 가져오기 |
|
||||
| `getSize()` | 항목 개수 반환 |
|
||||
|
||||
---
|
||||
|
||||
### **(4) `DefaultListModel<E>` (리스트 데이터 모델)**
|
||||
| 메서드 | 설명 |
|
||||
|--------|------------------------------------------|
|
||||
| `addElement(E item)` | 리스트에 항목 추가 |
|
||||
| `insertElementAt(E item, int index)` | 특정 위치에 항목 삽입 |
|
||||
| `removeElement(E obj)` | 특정 항목 제거 |
|
||||
| `removeElementAt(int index)` | 특정 인덱스의 항목 제거 |
|
||||
| `getElementAt(int index)` | 특정 인덱스의 항목 가져오기 |
|
||||
| `getSize()` | 항목 개수 반환 |
|
||||
|
||||
---
|
||||
|
||||
## **2. 관련 이벤트 정리**
|
||||
| 이벤트 리스너 | 관련 컴포넌트 | 설명 |
|
||||
|--------------|-------------|----------------------------------|
|
||||
| `ActionListener` | `JComboBox` | 콤보박스에서 항목이 선택될 때 발생 |
|
||||
| `ItemListener` | `JComboBox`, `JList` | 항목이 선택되거나 해제될 때 발생 |
|
||||
| `ListSelectionListener` | `JList` | 리스트의 선택 항목이 변경될 때 발생 |
|
||||
| `MouseListener` | `JList` | 리스트 항목을 마우스로 클릭할 때 발생 |
|
||||
|
||||
---
|
||||
|
||||
## **3. 예제 코드 및 설명**
|
||||
|
||||
### **(1) `JComboBox` 예제 – 항목 선택 시 라벨에 출력**
|
||||
```java
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
public class JComboBoxExample {
|
||||
public static void main(String[] args) {
|
||||
JFrame frame = new JFrame("JComboBox Example");
|
||||
frame.setSize(300, 150);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setLayout(new FlowLayout());
|
||||
|
||||
JLabel label = new JLabel("선택된 항목: ");
|
||||
JComboBox<String> comboBox = new JComboBox<>(new String[]{"사과", "바나나", "체리"});
|
||||
|
||||
comboBox.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
label.setText("선택된 항목: " + comboBox.getSelectedItem());
|
||||
}
|
||||
});
|
||||
|
||||
frame.add(comboBox);
|
||||
frame.add(label);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
```
|
||||
**설명:**
|
||||
- `JComboBox`에 "사과", "바나나", "체리" 항목을 추가.
|
||||
- 사용자가 선택하면 `ActionListener`가 실행되어 선택된 항목을 `JLabel`에 출력.
|
||||
|
||||
---
|
||||
|
||||
### **(2) `JList` 예제 – 여러 개 항목 선택 가능**
|
||||
```java
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
public class JListExample {
|
||||
public static void main(String[] args) {
|
||||
JFrame frame = new JFrame("JList Example");
|
||||
frame.setSize(300, 200);
|
||||
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
frame.setLayout(new BorderLayout());
|
||||
|
||||
DefaultListModel<String> listModel = new DefaultListModel<>();
|
||||
listModel.addElement("Java");
|
||||
listModel.addElement("Python");
|
||||
listModel.addElement("C++");
|
||||
listModel.addElement("JavaScript");
|
||||
|
||||
JList<String> list = new JList<>(listModel);
|
||||
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
|
||||
JScrollPane scrollPane = new JScrollPane(list);
|
||||
|
||||
JButton button = new JButton("선택 확인");
|
||||
JLabel label = new JLabel("선택된 항목: ");
|
||||
|
||||
button.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
List<String> selectedValues = list.getSelectedValuesList();
|
||||
label.setText("선택된 항목: " + selectedValues);
|
||||
}
|
||||
});
|
||||
|
||||
frame.add(scrollPane, BorderLayout.CENTER);
|
||||
frame.add(button, BorderLayout.SOUTH);
|
||||
frame.add(label, BorderLayout.NORTH);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
```
|
||||
**설명:**
|
||||
- `JList`에 "Java", "Python", "C++", "JavaScript" 항목 추가.
|
||||
- 여러 개의 항목을 선택할 수 있도록 `setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)` 설정.
|
||||
- 버튼을 누르면 선택된 항목이 `JLabel`에 출력됨.
|
||||
|
||||
---
|
||||
|
||||
## **4. 총정리**
|
||||
- **`JComboBox`**: 드롭다운 목록에서 하나의 항목 선택 가능. `ActionListener`와 `ItemListener`를 사용하여 선택 이벤트 처리.
|
||||
- **`JList`**: 여러 개의 항목을 리스트 형태로 표시. 선택 모드 설정 가능 (`SINGLE_SELECTION`, `MULTIPLE_INTERVAL_SELECTION`).
|
||||
- **`DefaultComboBoxModel`, `DefaultListModel`**: 동적으로 항목을 추가/삭제할 수 있는 모델 제공.
|
||||
- **관련 이벤트**: `ActionListener` (콤보박스 선택 이벤트), `ListSelectionListener` (리스트 선택 변경 감지).
|
||||
|
||||
위 내용을 바탕으로 다양한 UI 요소를 조합하여 인터랙티브한 프로그램을 만들 수 있다!
|
||||
Reference in New Issue
Block a user