2011-12-06 114 views
11

Estoy tratando de crear un mensaje con un botón Sí o No. A continuación, aparecerá una ventana con un mensaje determinado que depende de si el usuario hace clic en Sí o No.JOptionPane Sí o No ventana

Aquí está mi código:

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); 
    } 
} 

En este momento se imprime HOLA si está o no presione Sí o No. ¿Cómo hago para mostrar GOODBYE cuando el usuario elige No?

+0

Tiene código muerto en este. La otra parte nunca se ejecutará. –

+0

10 upvotes y 7 veces una pregunta favorita ... Me pregunto por qué – user489872

Respuesta

2

Usted está escribiendo if(true) por lo que siempre mostrará el mensaje "Hola".

Debe tomar la decisión sobre la base del valor de n devuelto.

+0

¿cómo puedo arreglar esto? –

+0

Sí, pero ¿cómo podría codificarlo? Podría asignar el resultado a una variable pero no sé cómo hacer esto –

+0

@JoshKing he editado mi respuesta. – gprathour

62

"if (true)" siempre será cierto y nunca más lo hará. Si quieres que funcione correctamente hay que hacer esto:

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

GRACIAS esto funcionó perfectamente –

+17

@JoshKing Si le funcionó, entonces debe votar y aceptar esta respuesta. – sloth

0

algo en este sentido ....

//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); 

es posible que también desee ver en DialogDemo

+0

Has escrito 'case JOptionPane.NO_OPTION:' 2 veces. –

+0

@HarryJoy corregido, Thx – Narayan

4

Puede corregir con esto:

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

Siempre está revisando una condición verdadera, por lo tanto, su mensaje será al formas de mostrar.

Debe reemplazar su estado de if (true) con if (n == JOptionPane.YES_OPTION)

Cuando uno de los métodos showXxxDialog devuelve un entero, los posibles valores son:

YES_OPTION NO_OPTION CANCEL_OPTION OK_OPTION CLOSED_OPTION

De here

+1

+1 para vincular a los JavaDocs, pero actualicé el enlace de 1.4.2 a 1.7 y agregué un delimitador al resumen del campo. –

2

Código de Sí y No Mensaje

 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

Usted puede hacer esto en su conjunto más simple:

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

Pierdes declaración de interrupción en tu interruptor. – aristotll

Cuestiones relacionadas