2011-12-06 9 views
11

Sto tentando di creare un messaggio con un pulsante Sì o No. Poi apparirà una finestra con un certo messaggio che dipende se l'utente fa clic su Sì o No.JOptionPane Sì o No finestra

Ecco il mio codice:

public class test{ 
    public static void main(String[] args){ 

     //default icon, custom title 
     int n = JOptionPane.showConfirmDialog(
      null, 
      "Would you like green eggs and ham?", 
      "An Inane Question", 
      JOptionPane.YES_NO_OPTION); 

     if(true){ 
      JOptionPane.showMessageDialog(null, "HELLO"); 
     } 
     else { 
      JOptionPane.showMessageDialog(null, "GOODBYE"); 
     } 

     System.exit(0); 
    } 
} 

In questo momento la stampa CIAO anche se non si preme Sì o No. Come faccio a mostrare GOODBYE quando l'utente sceglie No?

+0

si dispone di codice morto in questo. La tua parte non verrà mai eseguita. –

+0

10 upvotes e 7 volte una domanda preferita ... Mi chiedo perché – user489872

risposta

2

Stai scrivendo if(true) quindi mostrerà sempre il messaggio "Ciao".

È necessario prendere una decisione sulla base del valore di n restituito.

+0

come risolverei questo? –

+0

Sì, ma come dovrei codificarlo? Potrei assegnare l'output a una variabile ma non so come fare questo –

+0

@JoshKing ho modificato la mia risposta. – gprathour

62

"if (true)" sarà sempre vero e non arriverà mai al resto. Se si vuole che funzioni correttamente devi fare questo:

int reply = JOptionPane.showConfirmDialog(null, message, title, JOptionPane.YES_NO_OPTION); 
     if (reply == JOptionPane.YES_OPTION) { 
      JOptionPane.showMessageDialog(null, "HELLO"); 
     } 
     else { 
      JOptionPane.showMessageDialog(null, "GOODBYE"); 
      System.exit(0); 
     } 
+0

GRAZIE a questo ha funzionato perfettamente –

+17

@JoshKing Se ha funzionato per te, allora dovresti andare avanti e accettare questa risposta. – sloth

0

Qualcosa in questo senso ....

//default icon, custom title 
int n = JOptionPane.showConfirmDialog(null,"Would you like green eggs and ham?","An Inane Question",JOptionPane.YES_NO_OPTION); 

String result = "?"; 
switch (n) { 
case JOptionPane.YES_OPTION: 
    result = "YES"; 
    break; 
case JOptionPane.NO_OPTION: 
    result = "NO"; 
    break; 
default: 
    ; 
} 
System.out.println("Replace? " + result); 

si potrebbe anche voler guardare DialogDemo

+0

Hai scritto 'caso JOptionPane.NO_OPTION:' 2 volte. –

+0

@HarryJoy corretto, Thx – Narayan

4

È possibile risolvere con questo:

if(n == JOptionPane.YES_OPTION) 
{ 
    JOptionPane.showMessageDialog(null, "HELLO"); 
} 
else 
{ 
    JOptionPane.showMessageDialog(null, "GOODBYE"); 
} 
8

Si verifica sempre una condizione vera, quindi il messaggio verrà modi mostrano.

È necessario sostituire la sua dichiarazione if (true) con if (n == JOptionPane.YES_OPTION)

Quando uno dei metodi showXxxDialog restituisce un intero, i possibili valori sono:

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

Da here

+1

+1 per il collegamento a JavaDocs, ma ho aggiornato il collegamento da 1.4.2 a 1.7 e aggiunto un'ancora al riepilogo del campo. –

2

Codice per Sì e No Messaggio

 int n = JOptionPane.showConfirmDialog( 
       null, 
       "sample question?!" , 
       "", 
       JOptionPane.YES_NO_OPTION); 

     if(n == JOptionPane.YES_OPTION) 
     { 
      JOptionPane.showMessageDialog(null, "Opening..."); 
     } 
     else 
     { 
      JOptionPane.showMessageDialog(null, "Goodbye"); 
      System.exit(0); 
3

Si può fare questo nel suo complesso più semplice:

int test = JOptionPane.showConfirmDialog(null, "Would you like green eggs and ham?", "An insane question!"); 
switch(test) { 
    case 0: JOptionPane.showMessageDialog(null, "HELLO!"); //Yes option 
    case 1: JOptionPane.showMessageDialog(null, "GOODBYE!"); //No option 
    case 2: JOptionPane.showMessageDialog(null, "GOODBYE!"); //Cancel option 
} 
+0

Ti manca l'istruzione break nel tuo switch. – aristotll