Visualizzazione dei risultati da 1 a 10 su 10

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480

    EXIT_ON_CLOSE per JOptionPane

    Ciao a tutti
    ho questo JOptionPane:
    codice:
     try {
                    // Inserimento Continente
                    String[] optionsContinent = {"Europe", "Africa-Asia"};
                    int selectedContinent = JOptionPane.showOptionDialog(null, "Select a continent", "Information",
                            JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
                            null, optionsContinent, optionsContinent[0]);
                    
                    if (selectedContinent == 0) {
                        // Continente Europa
                        continente = optionsContinent[selectedContinent];
                        System.out.println(continente);
                    } else if (selectedContinent == 1) {
                        // Continente Africa-Asia
                        continente = optionsContinent[selectedContinent];
                        System.out.println(continente);
                    }
    
                    ProceduraInput.proceduraIngressi(continente);
    
                } catch (IOException ex) {
                    Logger.getLogger(PVEstimation.class.getName()).log(Level.SEVERE, null, ex);
                }
    che mi permette di selezionare un continente. Come faccio ad aggiungere l'opzione secondo la quale cliccando la "X" in altro a destra, mi chiuede semplicemente la finestra senza proseguire nelle istruzioni successive al JOptionPane ??

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Come faccio ad aggiungere l'opzione secondo la quale cliccando la "X" in altro a destra, mi chiuede semplicemente la finestra senza proseguire nelle istruzioni successive al JOptionPane ??
    La documentazione di showOptionDialog dice:

    Returns:
    an integer indicating the option chosen by the user, or CLOSED_OPTION if the user closed the dialog

    Per inciso, CLOSED_OPTION vale -1 (ma ovviamente usa la costante letterale ... non il valore).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ho fatto così
    codice:
    try {
                // Inserimento Continente
                String[] optionsContinent = {"Europe", "Africa-Asia"};
                int selectedContinent = JOptionPane.showOptionDialog(null, "Select a continent", "Information",
                        JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
                        null, optionsContinent, optionsContinent[0]);
                if (selectedContinent == 0) {
                    // Continente Europa
                    continente = optionsContinent[selectedContinent];
                    System.out.println(continente);
                }
                if (selectedContinent == 1) {
                    // Continente Africa-Asia
                    continente = optionsContinent[selectedContinent];
                    System.out.println(continente);
                }
                else if (selectedContinent == JOptionPane.CLOSED_OPTION) {
                  
                    // istruzione per chiuedere JOptionpane
                    
                }
    
                ProceduraInput.proceduraIngressi(continente);
    
            } catch (IOException ex) {
                Logger.getLogger(PVEstimation.class.getName()).log(Level.SEVERE, null, ex);
            }
    ma che istruzione utilizzo per far chiudere il JOptionPane ?
    Ultima modifica di roquentin; 21-03-2015 a 20:58

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    ma che istruzione utilizzo per far chiudere il JOptionPane ?
    Il JOptionPane lo chiude "a mano" solo l'utente ..... programmaticamente non fai alcuna chiusura. Se showOptionDialog ti restituisce JOptionPane.CLOSED_OPTION, vuol dire che l'utente ha già cliccato sulla X e la dialog del option pane si è già chiusa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    infatti la testo inserendo la condizione:
    codice:
    else if (selectedContinent == JOptionPane.CLOSED_OPTION) {
                  
                    // istrizione per chiuedere JOptionpane
                    
                }
    ma come dirgli che deve chiudermi la finestra senza andare avanti?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    ma come dirgli che deve chiudermi la finestra senza andare avanti?
    Quale finestra ?? Non conosco ovviamente il contesto della tua applicazione. Se hai un frame, lo chiudi con il dispose(). Non far fare "altro" di seguito ovviamente è questione di controllo del flusso (un return .... non so dove è quel try-catch ...).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Ok ma se io pongo questa condizione e non gli dico nulla all'interno , cliccando sulla "X", poi prosegue con l'istruzione successiva dell'ultima if, cioè passa a
    codice:
    ProceduraInput.proceduraIngressi(continente);
    e va avanti....

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Ok ma se io pongo questa condizione e non gli dico nulla all'interno , cliccando sulla "X", poi prosegue con l'istruzione successiva dell'ultima if
    Scusa ma non capisco il tuo dubbio: il showOptionDialog ti restituisce JOptionPane.CLOSED_OPTION proprio per dirti "guarda che l'utente ha chiuso la dialog e non ha scelto nulla".
    Spetta a te testarlo .....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    E' un JButton che mi avvia una procedura di inserimento.
    Quindi se scelgo una delle 2 opzioni prosegue con la procedura ma se chiudo con "X" deve chiuedermi la finestra senza proseguire

    codice:
     private void newCityActionPerformed(java.awt.event.ActionEvent evt) {                                        
    
            refreshCity.setEnabled(true);
            info.setEnabled(true);
    
            String continente = null;
    
            // Inserimento di una nuova città
            try {
                // Inserimento Continente
                String[] optionsContinent = {"Europe", "Africa-Asia"};
                int selectedContinent = JOptionPane.showOptionDialog(null, "Select a continent", "Information",
                        JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,
                        null, optionsContinent, optionsContinent[0]);
                if (selectedContinent == 0) {
                    // Continente Europa
                    continente = optionsContinent[selectedContinent];
                    System.out.println(continente);
                }
                if (selectedContinent == 1) {
                    // Continente Africa-Asia
                    continente = optionsContinent[selectedContinent];
                    System.out.println(continente);
                }
               
                ProceduraInput.proceduraIngressi(continente);
    
            } catch (IOException ex) {
                Logger.getLogger(PVEstimation.class.getName()).log(Level.SEVERE, null, ex);
            }
    
        }
    p.s. scusami ma certe volte mi incasino nelle cose più banali!!

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.