6.9 KiB
6.9 KiB
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 예제 – 항목 선택 시 라벨에 출력
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 예제 – 여러 개 항목 선택 가능
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 요소를 조합하여 인터랙티브한 프로그램을 만들 수 있다!