2012-03-16 34 views
7

Tengo una pregunta con respecto a presionar el botón cancelar de mi inputDialoguebox. He hecho una pregunta similar antes, así que me disculpo si parece que me repito.Haciendo clic en el botón cancelar showInputDialogue

El principal problema que tengo es que mi código se ejecuta independientemente de que yo presione cancelar y se realiza una conexión de socket incluso si no agrego ninguna entrada.

¿Por qué sucede esto y cómo puedo evitar esto?

String input = ""; 
      try 
      { 
       InetAddress host = InetAddress.getLocalHost(); 
       String hostAddress = host.getHostAddress(); 

       //setting label to host number so as to know what number to use 
       labHostName.setText("(" + hostAddress + ")"); 

       input = JOptionPane.showInputDialog(null,"Please enter host name to access server(dotted number only)...see number on frame", "name", JOptionPane.INFORMATION_MESSAGE); 

       if(input != null && "".equals(input))//input != null && input.equals("")) 
       { 
        throw new EmptyFieldsException(); 



       } 
       else if(input != null && !input.equals(hostAddress)) 
       { 
        throw new HostAddressException(); 


       } 

       else 
       { 

        clientSocket = new Socket(input, 7777); 

Así, con el código de ser la forma en que es en el momento de la conexión ClientSocket se hace aún si lo hago pulse cancelar. ¿El motivo es tal vez porque tengo el Servidor y el Cliente como dos programas separados en la misma máquina? ¿Cómo puedo evitar que esto suceda?

+0

Para una mejor ayuda antes, publique un [SSCCE] (http://sscce.org/). Por cierto, 'showInputDialogue' y' inputDialoguebox' no son tales cosas. Por favor, toma más cuidado escribiendo mensajes. –

+0

Lo siento. Haré eso – Arianule

Respuesta

5

Al hacer clic en Cancel Button del showInputDialog(...), siempre obtiene un valor nulo, para el que no se cumple ninguna condición, por lo tanto, siempre se establece una nueva conexión. para que pueda agregar esta condición como esto:

2

Siempre irá en otra condición incluso si se presiona el botón cancelar. Compruebe,

else if(input == JOptionPane.CANCEL_OPTION){ 
    System.out.println("Cancel is pressed"); 
} 

agregue el código anterior a la última declaración explícitamente, y toque el botón cancelar presionado allí.

+1

Parece que está cometiendo un error, el valor devuelto por 'showInputDialog (...)' es un 'String' y lo está comparando con un valor' int' de 'JOptionPane.CANCEL_OPTION'. Me equivoco ? –

+0

Sí, acabo de indicar una forma de hacerlo y qué pregunta falta. –

Cuestiones relacionadas