Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java Swing의 JComboBox와 JList, 핵심 차이점 한눈에 정리

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를 만들 수 있습니다.