HOWTO · Java
Crea un menu a discesa in Java
Questo tutorial insegna come creare un menu a tendina in Java.
In questa pagina
In Swing, usa JOptionPane per una scelta occasionale in una finestra di dialogo oppure JComboBox quando il menu a discesa fa parte di una finestra. Il metodo della finestra di dialogo restituisce il valore selezionato quando l’utente conferma; il controllo integrato mantiene la selezione corrente disponibile al resto della finestra.
Creare un menu a discesa con JOptionPane in Java
JOptionPane.showInputDialog può mostrare un array di opzioni e restituire l’elemento selezionato. Tra i suoi argomenti ci sono il componente padre, il prompt, il titolo della finestra di dialogo, il tipo di messaggio, un’icona facoltativa, le opzioni e la selezione iniziale. La selezione iniziale deve corrispondere a una delle opzioni. In questo esempio, options[1] imposta Orange come valore predefinito. Quando l’utente conferma, il metodo restituisce la stringa scelta. Se chiude la finestra di dialogo senza confermare, il metodo restituisce null: gestisci questo risultato prima di usare la selezione.
Esegui l’esempio nella console per visualizzare la selezione predefinita. Imposta la proprietà di sistema Java show.gui su true per aprire la finestra di dialogo Swing in un ambiente desktop grafico:
Il codice e le etichette o gli output visibili in questa sezione restano in inglese.
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
Con l’esecuzione predefinita nella console, il programma stampa la scelta iniziale. Se show.gui è attivo, l’utente può modificarla: la conferma stampa il valore scelto, mentre la chiusura della finestra di dialogo stampa il messaggio di annullamento. Per il percorso con finestra di dialogo è necessario un ambiente desktop grafico.
Creare un menu a discesa con JComboBox in Java
Usa JComboBox quando l’utente deve effettuare una scelta all’interno di una finestra. L’esempio può essere eseguito nella console, dove stampa una scelta rappresentativa, oppure con l’interfaccia grafica, che mostra il menu a discesa, un pulsante Done e un’etichetta con il risultato. Nell’esempio grafico invariato, il prompt iniziale, il titolo della finestra, l’etichetta del pulsante (Done) e il testo del risultato vengono visualizzati in inglese e restano in inglese. Un JPanel con FlowLayout dispone i componenti e consente all’etichetta di usare la propria dimensione preferita, evitando che si sovrapponga al pulsante. Il listener legge getSelectedItem() quando si fa clic sul pulsante e aggiorna l’etichetta.
Esegui l’esempio nella console per visualizzare la selezione di prova. Imposta show.gui su true per mostrare la finestra Swing:
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
Nel percorso grafico, JComboBox seleziona inizialmente il primo elemento, Apple. L’action listener legge la selezione corrente solo dopo il clic su Done; a quel punto l’etichetta mostra il valore selezionato. Il percorso nella console stampa un valore di esempio fisso, così è possibile illustrare il flusso della selezione senza aprire una finestra.
Scegli JOptionPane per una richiesta breve e occasionale, il cui risultato viene gestito subito. Scegli JComboBox quando la selezione è un controllo all’interno di un JFrame più ampio o quando l’utente può modificarla mentre la finestra resta aperta. Entrambi i percorsi grafici richiedono un ambiente desktop grafico; i percorsi predefiniti nella console non creano finestre Swing.