HOWTO · Java

Ein Dropdown-Menü in Java erstellen

In diesem Tutorial erfahren Sie, wie Sie ein Dropdown-Menü in Java erstellen.

Auf dieser Seite

Verwenden Sie in Swing JOptionPane für eine einmalige Auswahl in einem Dialog oder JComboBox, wenn das Dropdown Teil eines Fensters sein soll. Die Dialogmethode gibt den ausgewählten Wert zurück, sobald der Benutzer bestätigt; bei einem eingebetteten Steuerelement bleibt die aktuelle Auswahl für den Rest des Fensters verfügbar.

Ein Dropdown-Menü mit JOptionPane in Java erstellen

Mit JOptionPane.showInputDialog können Sie ein Array mit Auswahlmöglichkeiten anzeigen und das ausgewählte Element zurückgeben. Zu den Argumenten gehören die übergeordnete Komponente, die Eingabeaufforderung, der Dialogtitel, der Nachrichtentyp, ein optionales Symbol, die Auswahlmöglichkeiten und die anfängliche Auswahl. Die anfängliche Auswahl muss eine der Optionen sein. In diesem Beispiel legt options[1] Orange als Standard fest. Bestätigt der Benutzer, gibt die Methode die ausgewählte Zeichenfolge zurück. Schließt er den Dialog, gibt sie null zurück. Behandeln Sie diesen Fall, bevor Sie die Auswahl verwenden.

Führen Sie dieses Beispiel in der Konsole aus, um die Standardauswahl zu sehen. Setzen Sie die Java-Systemeigenschaft show.gui auf true, um den Swing-Dialog auf einem grafischen Desktop zu öffnen:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

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

Bei der standardmäßigen Konsolenausführung gibt das Programm die anfängliche Auswahl aus. Ist show.gui aktiviert, kann der Benutzer sie ändern. Beim Bestätigen wird dieser Wert ausgegeben; beim Schließen des Dialogs erscheint eine Abbruchmeldung. Für den Dialogpfad ist ein grafischer Desktop erforderlich.

Ein Dropdown-Menü mit JComboBox in Java erstellen

Verwenden Sie JComboBox, wenn der Benutzer eine Auswahl innerhalb eines Fensters treffen soll. Das folgende Beispiel gibt bei einer Konsolenausführung eine beispielhafte Auswahl aus. Der optionale GUI-Pfad zeigt das Dropdown, eine Schaltfläche Done und ein Ergebnislabel. Der unveränderte GUI-Code zeigt die Eingabeaufforderung, den Fenstertitel, die Schaltflächenbeschriftung Done und den Ergebnistext auf Englisch an; diese Texte sind nicht lokalisiert. Ein JPanel mit FlowLayout ordnet die Komponenten an und lässt das Label seine bevorzugte Größe verwenden, sodass es die Schaltfläche nicht überlappt. Der Listener liest beim Klicken auf die Schaltfläche getSelectedItem() aus und aktualisiert das Label.

Führen Sie das Beispiel in der Konsole aus, um die Beispielauswahl zu sehen. Setzen Sie show.gui auf true, um das Swing-Fenster anzuzeigen:

Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.

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

Im grafischen Pfad wählt JComboBox zunächst den ersten Eintrag, Apple, aus. Der Action-Listener liest die aktuelle Auswahl erst, wenn Done angeklickt wird; anschließend zeigt das Label diesen Wert an. Der Konsolenpfad gibt eine feste Beispielauswahl aus, sodass sich der Auswahlablauf auch ohne geöffnetes Fenster nachvollziehen lässt.

Wählen Sie JOptionPane für eine kurze, einmalige Abfrage, deren Ergebnis sofort verarbeitet wird. Wählen Sie JComboBox, wenn die Auswahl ein Steuerelement in einem größeren JFrame ist oder der Benutzer sie ändern können soll, während das Fenster geöffnet bleibt. Beide GUI-Pfade benötigen einen grafischen Desktop; bei den standardmäßigen Konsolenpfaden werden keine Swing-Fenster erstellt.