2012-07-15 315 views
8

Había creado un JOptionPane del tipo showInputDialog. Cuando lo abre, me muestra dos botones: OK y Cancelar. Me gustaría manejar la acción cuando presiono Cancelar el botón, pero no sé cómo llegar. ¿Cómo puedo obtenerlo?Cómo manejar el botón cancelar en JOptionPane

+0

http://stackoverflow.com/a/10966330/829571 – assylias

Respuesta

21

Por ejemplo:

int n = JOptionPane.showConfirmDialog(
          frame, "Would you like green eggs and ham?", 
          "An Inane Question", 
          JOptionPane.YES_NO_OPTION); 
if (n == JOptionPane.YES_OPTION) { 

} else if (n == JOptionPane.NO_OPTION) { 

} else { 

} 

Alternativamente con showOptionDialog:

Object[] options = {"Yes, please", "No way!"}; 
int n = JOptionPane.showOptionDialog(frame, 
       "Would you like green eggs and ham?", 
       "A Silly Question", 
       JOptionPane.YES_NO_OPTION, 
       JOptionPane.QUESTION_MESSAGE, 
       null, 
       options, 
       options[0]); 
if (n == JOptionPane.YES_OPTION) { 

} else if (n == JOptionPane.NO_OPTION) { 

} else { 

} 

Ver How to Make Dialogs para más detalles.

EDIT: showInputDialog

String response = JOptionPane.showInputDialog(owner, "Input:", ""); 
if ((response != null) && (response.length() > 0)) { 

} 
+1

Necesito usar showInputDialog que me devuelva un objeto de cadena – Mazzy

6

ShowMessageDialog, no debe mostrar dos botones, por lo que hay algo que no está bien con su código o su interpretación de él. De todos modos, si desea dar al usuario una opción y desea detectar esa opción, no use un showMessageDialog sino un showConfirmDialog, y obtenga el int retornado y pruébelo para ver si es JOptoinPane.OK_OPTION.

+1

he cometido un error. Me refiero a showInputDialog. Tengo como devolver un objeto de cadena – Mazzy

1

Ésta es una cuestión de edad, y yo soy un novato de Java, por lo que puede haber mejores soluciones, pero yo quería saber lo mismo, y tal vez puede ayudar a los demás, lo que hizo fue comprobar si la respuesta fue nula.

Esto funcionó para mí:

//inputdialog 
    JOptionPane inpOption = new JOptionPane(); 

    //Shows a inputdialog 
    String strDialogResponse = inpOption.showInputDialog("Enter a number: "); 

    //if OK is pushed then (if not strDialogResponse is null) 
    if (strDialogResponse != null){ 

     (Code to do something if the user push OK) 

    } 
    //If cancel button is pressed 
    else{ 

     (Code to do something if the user push Cancel) 

    } 
+0

Pero su código no maneja una situación, si su entrada está vacía y presiona el botón OK. Obtienes el error. – frank17

-1

Esta puede ser su respuesta:

package Joptionpane; 

import javax.swing.JOptionPane; 

public class Cancle_on_JOptionPane { 

    public static void main(String[] args) { 
     String s; 
     int i; 
     for(i=0;i<100;i++){ 
     s = JOptionPane.showInputDialog(null,"What is your favorite fruit ?"); 
         try{ 
           if(s.equals("")) { 
                  JOptionPane.showMessageDialog(null," Enter your answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
                  i=2; 
                 } 
           else { 
              JOptionPane.showMessageDialog(null," s = "+s," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
              i=100; 
             } 
          } 
     catch(Exception e) 
       { 
       JOptionPane.showMessageDialog(null,"Cancle answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
       i=100; 
       } 
    } 
    } 
} 
+0

Si bien este bloque de código puede responder la pregunta, sería mejor si pudiera proporcionar una pequeña explicación de por qué lo hace. Por favor [edite] su respuesta para incluir tal descripción. –

0
package Joptionpane; 

import javax.swing.JOptionPane; 

public class Cancle_on_JOptionPane { 

    public static void main(String[] args) { 
     String s; 
     int i; 
     for (i=0;i<100;i++){ 
      s = JOptionPane.showInputDialog(null,"What is your favorite fruit ?"); 
      try { 
       if (s.equals("")) { 
        JOptionPane.showMessageDialog(null," Enter your answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
        i=2; 
       } else { 
        JOptionPane.showMessageDialog(null," s = "+s," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
        i=100; 
       } 
      } 
      catch (Exception e) { 
       JOptionPane.showMessageDialog(null,"Cancle answer !!!"," ^-^ Information^-^ ",JOptionPane.INFORMATION_MESSAGE); 
       i=100; 
      } 
     } 
    } 
} 
+0

Agregue una explicación de cómo funciona el código. –

Cuestiones relacionadas