Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Finestra di dialogo

  1. #1

    Finestra di dialogo

    Salve , scusate ancora l'intrusione, vorrei sapere come accedere a una funzione quando clicco sul pulsante si o no.

    Se clicco si allora faccio una cosa altrimenti se clicco no faccio un altra cosa. Come si può fare? Grazie mille

    codice:
                JFrame frame=new JFrame();
                
        JOptionPane option = new JOptionPane ("Hai capito?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
        JDialog dialog = option.createDialog(frame,"Una domanda...");
        dialog.pack();
        dialog.setVisible(true);
    Ultima modifica di LeleFT; 30-05-2014 a 09:03 Motivo: Corretto tag CODE

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    codice:
                JFrame frame=new JFrame();
                
        JOptionPane option = new JOptionPane ("Hai capito?", JOptionPane.QUESTION_MESSAGE, JOptionPane.YES_NO_OPTION);
        JDialog dialog = option.createDialog(frame,"Una domanda...");
        dialog.pack();
        dialog.setVisible(true);
    L'uso "diretto" di JOptionPane, cioè istanziarlo, configurarlo, invocare createDialog, ecc.... è certo possibile ma si fa in casi e scenari ben particolari.
    Nel tuo caso, per un semplice sì/no, non ha molto senso. Usa una delle varianti del metodo statico showConfirmDialog. Se passi come optionType la costante JOptionPane.YES_NO_OPTION, allora showConfirmDialog ti può restituire 2 valori: YES_OPTION o NO_OPTION.
    Stop, tutto qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    L'uso "diretto" di JOptionPane, cioè istanziarlo, configurarlo, invocare createDialog, ecc.... è certo possibile ma si fa in casi e scenari ben particolari.
    Nel tuo caso, per un semplice sì/no, non ha molto senso. Usa una delle varianti del metodo statico showConfirmDialog. Se passi come optionType la costante JOptionPane.YES_NO_OPTION, allora showConfirmDialog ti può restituire 2 valori: YES_OPTION o NO_OPTION.
    Stop, tutto qui.

    E una cosa che devo fare per forza. Lo so che non ha senso ma devo farlo.

    Allora come posso invocare una funzione che quando clicco si mi esegua la mia istruzione?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da signfra Visualizza il messaggio
    E una cosa che devo fare per forza. Lo so che non ha senso ma devo farlo.
    Scusa (curiosità mia): motivo esatto di tale cosa "per forza"?

    Quote Originariamente inviata da signfra Visualizza il messaggio
    Allora come posso invocare una funzione che quando clicco si mi esegua la mia istruzione?
    Con l'uso "diretto" di JOptionPane devi usare getValue() di JOptionPane per sapere quale opzione ha scelto l'utente.
    getValue() può restituire:
    - null se l'utente ha chiuso la dialog (con il pulsantino "X")
    - un Integer con il valore della opzione scelta (es. JOptionPane.YES_OPTION o JOptionPane.NO_OPTION)


    P.S. dopo setVisible(true) è bene fare un dispose()
    P.S.2: dai anche una "sbirciata" al sorgente di JOptionPane, in particolare al metodo showOptionDialog .... ti illuminerà.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Scusa (curiosità mia): motivo esatto di tale cosa "per forza"?


    Con l'uso "diretto" di JOptionPane devi usare getValue() di JOptionPane per sapere quale opzione ha scelto l'utente.
    getValue() può restituire:
    - null se l'utente ha chiuso la dialog (con il pulsantino "X")
    - un Integer con il valore della opzione scelta (es. JOptionPane.YES_OPTION o JOptionPane.NO_OPTION)


    P.S. dopo setVisible(true) è bene fare un dispose()
    P.S.2: dai anche una "sbirciata" al sorgente di JOptionPane, in particolare al metodo showOptionDialog .... ti illuminerà.
    Allora il problema e che con questo metodo non so come effettuare una istruzioe quando ho premuto si ,no,o no eggs. E poi Come si può personalizzare l'icona?

    codice:
    //Custom button text
    Object[] options = {"Yes, please",
                        "No, thanks",
                        "No eggs, no ham!"};
    int n = JOptionPane.showOptionDialog(frame,
        "Would you like some green eggs to go "
        + "with that ham?",
        "A Silly Question",
        JOptionPane.YES_NO_CANCEL_OPTION,
        JOptionPane.QUESTION_MESSAGE,
        null,
        options,
        options[2]);

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Ovviamente dovrai controllare il valore di "n", che sarà l'indice dell'array "options" corrispondente alla scelta fatta. Quindi, nel tuo caso, 0 se è stato scelto "Yes, please", 1 se è stato scento "No, thanks", 2 se è stato scelto "No eggs, no ham!". Viene restituito il valore JOptionPane.CLOSED_OPTION se l'utente ha chiuso la dialog senza scegliere nulla.

    Il tutto, banalmente, con uno switch:

    codice:
    int n = JOptionPane.showOptionDialog( ... );
    switch( n ) {
       case 0:   // E' stato scelto "Yes, please"
          ...   // Fai quel che devi
          break;
    
       case 1:   // E' stato scelto "No, thanks"
          ...   // Fai quel che devi
          break;
    
       case 2:   // E' stato scelto "No eggs, no ham!"
          ...   // Fai quel che devi
          break;
    
       case JOptionPane.CLOSED_OPTION:   // L'utente ha chiuso la dialog, non ha scelto nulla
          ...   // Fai quel che devi
          break;
    }

    Per personalizzare l'icona basta passargli questa icona personalizzata (un oggetto Icon) come sesto argomento. L'oggetto Icon lo ricavi come vuoi.


    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.