2012-03-16 3 views
7

У меня есть вопрос относительно нажатия кнопки отмены моего вводаDialoguebox. Я задал аналогичный вопрос, прежде чем я прошу прощения, если я, кажется, повторяюсь.Нажатие кнопки отмены showInputDialogue

Основная проблема, с которой я столкнулся, заключается в том, что мой код выполняется независимо от того, что я нажимаю отменить, и соединение сокетов действительно выполняется, даже если я не добавляю никакого ввода.

Почему это происходит и как я могу избежать этого?

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

Так с кода, так оно и есть на данный момент соединение ClientSocket производится даже если я нажмите отменить. Является ли причиной этого, возможно, потому, что у меня есть Сервер и Клиент как две отдельные программы на одной машине? Как я могу избежать этого?

+0

Для лучшей помощи раньше, опубликовать [SSCCE] (http://sscce.org/). BTW - 'showInputDialogue' и' inputDialoguebox' нет таких вещей. Пожалуйста, будьте внимательнее печатайте сообщения. –

+0

Извините. Я сделаю это – Arianule

ответ

5

Когда вы нажимаете на Cancel ButtonshowInputDialog(...), вы всегда получаете нулевое значение, для которого не выполняется условие, поэтому всегда устанавливается новое соединение. Таким образом, вы можете добавить это условие, как это:

2

Он всегда будет действовать иначе, даже если нажата кнопка отмены. Проверить,

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

добавить код выше, чем в предыдущем, и нажать кнопку отмены.

+1

Кажется, что вы немного ошибаетесь, значение, возвращаемое 'showInputDialog (...)', является 'String', и вы сравниваете его с значением' int' 'JOptionPane.CANCEL_OPTION'. Я ошибаюсь ? –

+0

Да, я только что сказал, как это сделать, и что вопрос отсутствует. –

Смежные вопросы