HOWTO · Java

Java에서 드롭다운 메뉴 만들기

이 자습서에서는 Java에서 드롭 다운 메뉴를 만드는 방법을 설명합니다.

이 페이지의 내용

Swing에서는 대화상자에서 한 번 선택하게 하려면 JOptionPane을, 창 안에 드롭다운을 넣으려면 JComboBox를 사용합니다. 대화상자 메서드는 사용자가 확인하면 선택한 값을 반환하고, 창에 포함된 컨트롤은 현재 선택을 창의 다른 부분에서도 사용할 수 있게 유지합니다.

Java에서 JOptionPane으로 드롭다운 메뉴 만들기

JOptionPane.showInputDialog는 선택 항목 배열을 표시하고 선택된 항목을 반환할 수 있습니다. 인수에는 부모 컴포넌트, 안내 문구, 대화상자 제목, 메시지 유형, 선택적 아이콘, 선택 항목, 초기 선택값이 포함됩니다. 초기 선택값은 선택 항목 중 하나여야 합니다. 이 예제에서는 options[1]이 Orange를 기본값으로 지정합니다. 사용자가 확인하면 메서드는 선택한 문자열을 반환합니다. 대화상자를 닫으면 null을 반환하므로 선택값을 사용하기 전에 이 결과를 처리해야 합니다.

기본 선택값을 확인하려면 콘솔에서 이 예제를 실행합니다. 그래픽 데스크톱에서 Swing 대화상자를 열려면 Java 시스템 속성 show.gui를 true로 설정합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

import javax.swing.JOptionPane;

public class DropDown {
    public static void main(String[] args) {
        String[] options = {"Apple", "Orange", "Banana", "Pineapple", "None of the listed"};
        String selectedFruit;

        if (Boolean.getBoolean("show.gui")) {
            selectedFruit = (String) JOptionPane.showInputDialog(
                    null,
                    "What fruit do you like the most?",
                    "Choose Fruit",
                    JOptionPane.QUESTION_MESSAGE,
                    null,
                    options,
                    options[1]);
        } else {
            selectedFruit = options[1];
        }

        if (selectedFruit == null) {
            System.out.println("No fruit selected.");
        } else {
            System.out.println("Your chosen fruit: " + selectedFruit);
        }
    }
}
Your chosen fruit: Orange

기본 콘솔 실행에서는 프로그램이 초기 선택 항목을 출력합니다. show.gui를 활성화하면 사용자가 항목을 바꿀 수 있습니다. 확인하면 해당 값이 출력되고, 대화상자를 닫으면 취소 메시지가 출력됩니다. 대화상자 경로를 사용하려면 그래픽 데스크톱이 필요합니다.

Java에서 JComboBox로 드롭다운 메뉴 만들기

창 안에서 사용자가 항목을 선택하도록 하려면 JComboBox를 사용합니다. 아래 예제에는 대표 선택 항목을 출력하는 콘솔 실행과 실제 드롭다운, Done 버튼, 결과 레이블을 표시하는 선택적 GUI 경로가 있습니다. 이 예제의 GUI 안내 문구, 창 제목, 버튼 레이블, 결과 텍스트는 모두 영어로 표시됩니다. FlowLayout을 사용하는 JPanel은 컴포넌트를 배치하고 레이블이 선호 크기를 사용하게 하므로 버튼과 겹치지 않습니다. 버튼을 클릭하면 리스너가 getSelectedItem()을 읽고 레이블을 갱신합니다.

샘플 선택 항목을 확인하려면 콘솔에서 예제를 실행합니다. Swing 창을 표시하려면 show.gui를 true로 설정합니다.

이 섹션의 코드와 표시되는 레이블 또는 출력은 영어로 유지됩니다.

import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class ComboBoxExample {
    public static void main(String[] args) {
        if (Boolean.getBoolean("show.gui")) {
            SwingUtilities.invokeLater(() -> {
                String[] options = {"Apple", "Orange", "Banana", "Pineapple", "None of the listed"};
                JComboBox<String> fruitBox = new JComboBox<>(options);
                JButton doneButton = new JButton("Done");
                JLabel resultLabel = new JLabel("Choose a fruit, then click Done.");

                doneButton.addActionListener(event ->
                        resultLabel.setText("You selected " + fruitBox.getSelectedItem()));

                JPanel panel = new JPanel(new FlowLayout());
                panel.add(fruitBox);
                panel.add(doneButton);
                panel.add(resultLabel);

                JFrame frame = new JFrame("Choose a Fruit");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setContentPane(panel);
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            });
        } else {
            String selectedFruit = "Orange";
            System.out.println("You selected " + selectedFruit);
        }
    }
}
You selected Orange

그래픽 경로에서 JComboBox는 첫 번째 항목인 Apple을 처음에 선택합니다. 액션 리스너는 Done을 클릭한 뒤에 현재 선택 항목을 읽고, 레이블에 그 값을 표시합니다. 콘솔 경로는 창을 열지 않고도 선택 흐름을 보여 주도록 고정된 샘플을 출력합니다.

결과를 바로 처리하는 간단한 일회성 입력에는 JOptionPane을 선택합니다. 선택 항목을 더 큰 JFrame의 컨트롤로 두거나 창이 열린 동안 사용자가 선택을 바꿀 수 있어야 한다면 JComboBox를 선택합니다. 두 GUI 경로 모두 그래픽 데스크톱이 필요하며, 기본 콘솔 경로는 Swing 창을 만들지 않고 실행됩니다.