JOptionPane.showInputDialog() è un metodo che è sottoposto ad overload.
Tu stai usando una versione di tale metodo che non ti serve... se passi "null" come primo argomento e una stringa come secondo argomento, quale di queste versioni verrà invocata?
showInputDialog(Object message, Object initialSelectionValue)
showInputDialog(Component parentComponent, Object message)
in questo momento non lo so e non ho nessuna intenzione di andarlo a verificare... rimane il problema che, per quel che desideri fare, c'è un metodo molto più specializzato:
showInputDialog(Object message)
Detto questo, per controllare se l'utente ha premuto il pulsante "Annulla" ti è sufficiente verificare che il valore restituito sia nullo. Infatti, se l'utente non digita nulla e conferma viene restituita una stringa vuota; al contrario, se l'utente annulla l'inserimento viene restituito null. E non c'è nemmeno bisogno della variabile booleana supplementare:
Se esci dal do/while dovrai controllare che il valore di k sia >= 0 per procedere, altrimenti significa che l'utente ha annullato l'inserimento e ti comporterai di conseguenza.codice:do { k = -2; // Valore di default (non valido) String value = JOptionPane.showInputDialog("Inserisci il numero di direzioni per costruire la matrice A: "); if (value != null) { try{ k = Integer.parseInt( value ); }catch(NumberFormatException e ){ k = -2; // Non serve, ma non fa male } if (k < 0) { JOptionPane.showMessageDialog(null, "ATTENZIONE! È STATO INSERITO UN VALORE ERRATO.\nINSERIRE UN NUMERO INTERO POSITIVO", "ATTENZIONE!", JOptionPane.WARNING_MESSAGE); } } else { // L'utente ha annullato l'inserimento k = -1; } } while (k < -1);
Ciao.![]()



Rispondi quotando