Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Impedire chiusura "showInputDialog"

    So che non ha molto senso il titolo del thread, perdonatemi. Il problemino è questo:
    devo richiedere l'inserimento di un nome (String) all'utente che utilizzerò subito dopo. Per farlo faccio così:

    String nome = JOptionPane.showInputDialog("Inserisci il tuo nome");

    Il problema è che se l'utente preme sul tasto "annulla" il mio programma va a rotoli.
    Come posso aggirare questo problema? Grazie

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Impedire chiusura "showInputDialog"

    Originariamente inviato da Javino89
    So che non ha molto senso il titolo del thread, perdonatemi. Il problemino è questo:
    devo richiedere l'inserimento di un nome (String) all'utente che utilizzerò subito dopo. Per farlo faccio così:

    String nome = JOptionPane.showInputDialog("Inserisci il tuo nome");

    Il problema è che se l'utente preme sul tasto "annulla" il mio programma va a rotoli.
    Come posso aggirare questo problema? Grazie
    Premendo "annulla" verrà restuito null. Non puoi fare un controllo sul valore restituito ed eventualmente chiedere nuovamente l'input all'utente?

    Una cosa del genere:

    codice:
    String nome;
    
    do {
        nome = JOptionPane.showInputDialog("Inserisci il tuo nome");
    } while (nome == null);
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    La cosa era talmente banale che dopo una giornata a programmare non ci ho pensato . Grazie

  4. #4
    Eh no infatti era eccessivamente banale. In tal modo se l'utente vuole rinunciare non può rinunciare visto che rimane bloccato su quell'input. Altro problema si verifica se preme ok senza aver scritto nulla. Mi ritrovo con un campo String vuoto. Mi sa che invece di sfruttare
    showInputDialog mi tocca costruire una frame vera e propria >.>

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    codice:
    String nome;
    
    do {
       boolean richiedi = true;
       nome = JOptionPane.showInputDialog("Inserisci il tuo nome");
       if (nome == null) {
          int ret = JOptionPane.showConfirmDialog(null,
                    "Se non si specifica un nome, l'operazione verrà annullata. Annullare l'operazione?",
                    "Richiesta annullamento",
                    JOptionPane.YES_NO_OPTION);
          richiedi = (ret != JOptionPane.YES_OPTION);
       }
    } while (richiedi && (nome == null));
    Questa è un'opzione...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Non va bene uguale. Ottengo uno String null e il programma da NullPointerException.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da Javino89
    Non va bene uguale. Ottengo uno String null e il programma da NullPointerException.
    Mi sembra ovvio che, prima di "proseguire" dovrai accertarti che la stringa non sia nulla; se è nulla significa che l'utente ha annullato l'operazione e non dovrai fare altro.

    codice:
    String nome;
    
    do {
       boolean richiedi = true;
       nome = JOptionPane.showInputDialog("Inserisci il tuo nome");
       if (nome == null) {
          int ret = JOptionPane.showConfirmDialog(null,
                    "Se non si specifica un nome, l'operazione verrà annullata. Annullare l'operazione?",
                    "Richiesta annullamento",
                    JOptionPane.YES_NO_OPTION);
          richiedi = (ret != JOptionPane.YES_OPTION);
       }
    } while (richiedi && (nome == null));
    
    
    if (nome != null) {
       ... // Tutto il resto dell'esecuzione del programma
    }
    
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.