JComboBox<E>, 콤보박스 컴포넌트
JComboBox<E>
JComboBox<E>는 텍스트필드, 버튼, 드롭다운(drop down) 리스트로 구성되는 콤보박스 컴포넌트를 구현합니다. E는 콤보박스에 삽입되는 아이템의 타입으로, 콤보박스를 생성할 때 E 대신 아이템의 타입을 대입하여 구체화해야 합니다.
JComboBox 컴포넌트의 생성
콤보박스 컴포넌트는 다음 생성자를 이용하여 생성합니다.
JComboBox<E>() // 빈 콤보박스
JComboBox<E>(Vector listData) // 백터로부터 아이템을 공급받는 콤보박스
JComboBox<E>(Object [] listEData) // 배열로부터 아이템을 공급받는 콤보박스
JList<E>와 같이, JComboBox<E>(Vector listData)나 JComboBox<E>(Object [] listData) 생성자를 이용하여 벡터나 배열로부터 아이템을 공급받아 만들어진 콤보박스는, 한 번 생성된 후 listData(백터나 배열)를 수정해도 콤보박스를 변경헐 수 없거나 예측할 수 없는 일이 발생하므로 주의하기를 바랍니다.
배열로부터 콤보박스 생성
String [] fruits = {"apple", "banana", "kiwi", "mango", "pear",
"peach", "berry", "strawberry", "blackberry"};
JComboBox<String> strCombo = new JComboBox<String>(fruits);
콤보박스에 동적으로 아이템 추가하기
콤보박스는 리스트와 달리 동적으로 아이템의 추가/삭제가 가능합니다.
private String [] names = {"kitae", "jaemoon", "hyosoo", "namyun"};
JComboBox<String> nameCombo = new JComboBox<String>(); // 빈 콤보박스 생성
for(int i=0; i<names.length; i++)
nameCombo.addItem(names[i]); // names[]의 문자열을 콤보박스에 추가
빈 콤보박스 컴포넌트의 아이템 삭제하기
removeItem(Object obj), removeItemAt(int index), removeAllItems() 등을 호출하여 콤보박스의 아이템을 삭제할 수 있습니다. index는 0부터 시작합니다.
nameCombo.removeItemAt(2); // 3번째 아이템 삭제
콤보박스 만들기
import javax.swing.*;
import java.awt.*;
public class ComboBoxEx extends JFrame {
private String [] fruits = {"apple", "banana", "kiwi", "mango", "pear",
"peach", "berry", "strawberry", "blackberry"};
private String [] names = {"kitae", "jaemoon", "hyosoo", "namyun"};
public ComboBoxEx() {
setTitle("콤보박스 만들기 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
JComboBox<String> comboBox = new JComboBox<>(fruits); // 문자열 콤보박스 생성
c.add(comboBox);
JComboBox<String> nameCombo = new JComboBox<String>(); // 빈 콤보박스 생성
for (int i = 0; i < names.length; i++) {
nameCombo.addItem(names[i]); // 콤보박스에 문자열 아이템 삽입
}
c.add(nameCombo);
setSize(300, 300);
setVisible(true);
}
public static void main(String[] args) {
new ComboBoxEx();
}
}
[실행 결과]

JComboBox<E>와 Action 이벤트
콤보박스의 아이템을 선택하면 다음 2개의 이벤트가 동시에 발생합니다.
- Action 이벤트
- Item 이벤트
아이템 선택을 일종의 명령으로 처리하고자 하면 Action 이벤트를, 아이템을 선택하거나 해제하는 것이 목적이라는 Item 이벤트를 처리하면 됩니다.
int getSelectedIndex() // 선택 가능한 아이템의 인덱스 번호를 리턴합니다.
Object getSelectedItem() // 선택 상태인 아이템의 객체의 레퍼런스를 리턴합니다.
Action 이벤트를 이용한 콤보박스 활용 예
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ComboActionEx extends JFrame {
private String [] fruits = {"apple", "banana", "kiwi", "mango"}; // 콤보박스의 아이템
private ImageIcon [] images = { // 이미지 객체 배열
new ImageIcon("images/apple.jpg"),
new ImageIcon("images/banana.jpg"),
new ImageIcon("images/kiwi.jpg"),
new ImageIcon("images/mango.jpg")};
private JLabel imgLabel = new JLabel(images[0]); // 이미지 레이블 컴포넌트
private JComboBox<String> strCombo = new JComboBox<String>(fruits); // 문자열 콤보박스
public ComboActionEx() {
setTitle("콤보박스 활용 예제");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(strCombo);
c.add(imgLabel);
// Action 리스너 등록
strCombo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox<String> cb = (JComboBox<String>) e.getSource(); // Action 이벤트가 발생한 알아내기
int index = cb.getSelectedIndex(); // 콤보박스의 선택된 아이템의 인덱스 번호 알아내기
imgLabel.setIcon(images[index]); // 인덱스의 이미지를 이미지 레이블 컴포넌트에 출력
}
});
setSize(300, 250);
setVisible(true);
}
public static void main(String[] args) {
new ComboActionEx();
}
}
[실행결과]


'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| 스윙 컴포넌트 그리기 (4) | 2025.07.18 |
|---|---|
| JSlider, 슬라이더 컴포넌트 (2) | 2025.07.15 |
| JList<E>, 리스트 컴포넌트 (3) | 2025.07.10 |
| JTextArea, 텍스트 영역 컴포넌트 (2) | 2025.07.07 |
| JTextField, 텍스트필드 컴포넌트 (0) | 2025.07.04 |