Guida alla programmazione delle GUI, interfacce grafiche in Java 2D - 9: le finestre del gruppo JOptionPane: message, confirm, input, option dialog
Capitolo 09: Le finestre del gruppo JOptionPane: message, confirm, input, option dialog.
Per implementare semplici finestre di pop-up per comunicare messaggi agli utenti, richiedere un valore in input o chiedere conferma (sì/no/annulla), non è necessario implementare una struttura basata su frames, pannelli, componenti e listener: ci si può infatti avvalere degli strumenti forniti dalla classe JOptionPane.
JOptionPane è una classe che estende da JComponent (dunque una Swing) e che permette di visualizzare finestre di pop-up modali (ossia: che bloccano il flusso dell'esecuzione del thread che le ha invocate finchè l'utente non le chiude).
La classe mette a disposizione una gran quantità di metodi (per informazioni dettagliate ed un elenco completo, si rimanda alle API ufficiali), ma la maggior parte di questi è riconducibile alla visualizzazione di quattro tipi di finestre:
-
finestre di conferma, dove l'utente deve cliccare su pulsanti sì-no-annulla;
-
finestre di input, dove è richiesto l'inserimento di un valore;
-
finestre di messaggio, che informano l'utente riguardo qualcosa (messaggio da impostare dal programmatore);
-
finestre 'di opzione', che racchiudono tutti i tipi precedentemente elencati.
A queste funzionalità corrispondono i metodi:
-
showConfirmDialog;
-
showInputDialog;
-
showMessageDialog;
-
showOptionDialog.
Come detto, esistono più metodi possibili per ciascun tipo di finestra; l'intero set è elencato qui di seguito:
-
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType)
-
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType)
-
static int showConfirmDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon)
-
static String showInputDialog(Component parentComponent, Object message)
-
static String showInputDialog(Component parentComponent, Object message, Object initialSelectionValue)
-
static String showInputDialog(Component parentComponent, Object message, String title, int messageType)
-
static Object showInputDialog(Component parentComponent, Object message, String title, int messageType, Icon icon, Object[] selectionValues, Object initialSelectionValue)
-
static String showInputDialog(Object message)
-
static String showInputDialog(Object message, Object initialSelectionValue)
-
static void showMessageDialog(Component parentComponent, Object message)
-
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType)
-
static void showMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)
-
showOptionDialog(Component parentComponent, Object message, String title, int optionType, int messageType, Icon icon, Object[] options, Object initialValue)
Nella maggior parte dei casi, i parametri hanno significati ovvi, mentre per altri è necessaria una piccola trattazione:
-
parentComponent identifica il componente 'padre' della dialog box; è possibile utilizzare anche il valore null, che utilizzerà un frame di default come padre;
-
messageType definisce lo stile del messaggio: se si tratta di una informazione generica, una domanda, un avviso di 'pericolo'.... a seconda dei casi, verranno mostrati dei simboli nella dialog; valori possibili (significati ovvi): ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, PLAIN_MESSAGE;
-
optionType definisce il set di pulsanti per le opzioni che verranno mostrati sul fondo della dialog box; valori possibili (ma non gli unici possibili): DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, OK_CANCEL_OPTION.
Quando una finestra di dialogo restituisce un intero, il valore di quest'ultimo può essere uno tra i seguenti (costanti predefinite): YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION.
La seguente porzione di codice definisce una classe eseguibile che, una volta avviata, mostra a video una una input dialog, una confirm dialog, una message dialog ed infine termina l'esecuzione.
Ecco il codice:
import javax.swing.*; public class ProvaJOptionPane { public static void main(String[] args) { String messaggio = JOptionPane.showInputDialog(null, "Inserisci un messaggio", "Inserisci una stringa", JOptionPane.PLAIN_MESSAGE); int conferma = JOptionPane.showConfirmDialog(null, "Seleziona sì, no o cancella", "Scegli un'opzione", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); String output = "Hai scritto: \"" + messaggio + "\" ed hai cliccato sul pulsante: " + conferma; JOptionPane.showMessageDialog(null, output); System.exit(0); } }
|