Files
java-examples/docs/swing/ComboBox, JList.md

6.9 KiB
Raw Blame History

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: 드롭다운 목록에서 하나의 항목 선택 가능. ActionListenerItemListener를 사용하여 선택 이벤트 처리.
  • JList: 여러 개의 항목을 리스트 형태로 표시. 선택 모드 설정 가능 (SINGLE_SELECTION, MULTIPLE_INTERVAL_SELECTION).
  • DefaultComboBoxModel, DefaultListModel: 동적으로 항목을 추가/삭제할 수 있는 모델 제공.
  • 관련 이벤트: ActionListener (콤보박스 선택 이벤트), ListSelectionListener (리스트 선택 변경 감지).

위 내용을 바탕으로 다양한 UI 요소를 조합하여 인터랙티브한 프로그램을 만들 수 있다!