JComboBox는 드롭다운 목록(drop-down list)을 표시하는 컴포넌트로, 사용자가 한 번에 단 하나의 항목만 선택할 수 있도록 옵션을 제공합니다. 반면 JList는 여러 개의 항목(행)을 화면에 나열하여 보여주며, 사용자가 여러 항목을 동시에 선택할 수 있는 기능까지 지원한다는 점이 가장 큰 차이입니다.
JComboBox란?
- JComboBox는 편집 가능(editable) 모드와 읽기 전용(read-only) 모드로 설정할 수 있습니다.
- ActionListener, ChangeListener, ItemListener 인터페이스를 활용해 사용자의 동작을 처리할 수 있습니다.
- getSelectedItem() 메서드를 사용하면 콤보 박스에서 선택되었거나 직접 입력된 항목을 가져올 수 있습니다.
- setEditable() 메서드를 통해 콤보 박스의 텍스트 입력 영역을 켜거나 끌 수 있습니다.
- 배열(array)이나 벡터(vector)로부터 JComboBox 인스턴스를 생성할 수 있으며, 대부분의 경우 ComboBoxModel을 사용해 콤보 박스의 요소를 관리하는 것이 좋습니다.
JComboBox 예제 코드
import java.awt.*;
import javax.swing.*;
public class JComboBoxTest extends JFrame {
JComboBoxTest() {
setTitle("JComboBox Test");
String country[] = {"India", "Aus", "Singapore", "England", "Newzealand"};
JComboBox jcb = new JComboBox(country);
setLayout(new FlowLayout());
add(jcb);
setSize(300, 250);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args) {
new JComboBoxTest();
}
}
위 코드를 실행하면 국가 목록이 담긴 드롭다운 콤보 박스가 생성되며, 사용자는 이 중 하나의 국가만 선택할 수 있습니다.
JList란?
- JList는 사용자가 단일 선택(single selection) 또는 다중 선택(multiple selections)을 할 수 있도록 허용하는 컴포넌트입니다.
- JList 클래스 자체는 스크롤바를 지원하지 않습니다. 따라서 스크롤바를 추가하려면 JList 클래스와 함께 JScrollPane 클래스를 사용해야 하며, JScrollPane이 스크롤바를 자동으로 관리해 줍니다.
- getSelectedIndex() 메서드는 첫 번째로 선택된 항목의 인덱스를 반환하며, 아무것도 선택되지 않았다면 -1을 반환합니다. 또한 getSelectedIndexes() 메서드는 선택된 각 항목의 인덱스를 담은 배열을 반환하고, 선택된 항목이 없으면 빈 배열을 반환합니다.
- getSelectedValue() 메서드는 첫 번째로 선택된 항목을 반환하며, 선택된 항목이 없으면 null을 반환합니다.
- DefaultListModel 클래스는 리스트 모델의 간단한 구현체를 제공하며, 이를 통해 JList 컨트롤에 표시되는 항목들을 손쉽게 관리할 수 있습니다.
JList 예제 코드
import java.awt.*;
import javax.swing.*;
public class JListTest extends JFrame {
JListTest() {
setTitle("JList Test");
DefaultListModel dlm = new DefaultListModel();
dlm.addElement("India");
dlm.addElement("Aus");
dlm.addElement("England");
dlm.addElement("Singapore");
JList list = new JList();
list.setModel(dlm);
setLayout(new FlowLayout());
add(list);
setSize(350, 275);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String args[]) {
new JListTest();
}
}
위 코드를 실행하면 여러 국가가 나열된 리스트가 화면에 표시되며, 필요에 따라 Ctrl 키나 Shift 키를 이용해 여러 항목을 동시에 선택할 수 있습니다.
정리: 어떤 상황에 무엇을 써야 할까?
선택지가 많지 않고 하나의 값만 필요하다면 JComboBox가 적합하며, 화면 공간을 절약할 수 있다는 장점이 있습니다. 반면 항목을 한눈에 모두 보여줘야 하거나 다중 선택 기능이 필요하다면 JList(필요 시 JScrollPane과 함께)를 사용하는 것이 좋습니다. 두 컴포넌트의 특성을 잘 이해하고 상황에 맞게 활용하면 더욱 직관적인 Swing UI를 만들 수 있습니다.