Диалоговое окно ввода в Java - PullRequest
2 голосов
/ 14 марта 2012

Я занят проектом для школы, в котором я использую InputDialogbox, чтобы получить имя хоста от пользователя, чтобы установить соединение с клиентским сокетом.

Есть две вещи, которые меня немного озадачивают.

Сначала я устанавливаю соединение на стороне сервера, а затем устанавливаю соединение с клиентом следующим образом.

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

clientSocket = new Socket(input, 7777);

что меня так озадачивает, если я нажимаю клавишу ввода в диалоговом окне, не вводя никаких данных ... т.е. без указания IP-адреса соединение с сокетом устанавливается независимо. Почему это так?

Чтобы преодолеть эту «проблему», я решил попытаться заставить пользователя сделать запись в диалоговом окне

if(input.equals(""))
{
    throw new EmptyFieldsException();
}

Дело в том, что теперь, если я нажимаю на кнопку отмены, я получаю исключение NullPointerException. Как я могу отменить диалоговое окно без получения этого исключения?

С уважением Arian

Ответы [ 4 ]

4 голосов
/ 14 марта 2012

Просто сделай:

input = JOptionPane.showInputDialog(null,"host name", "name", JOptionPane.INFORMATION_MESSAGE); 

if (input != null && input.equals("")) {
    clientSocket = new Socket(input, 7777);
    // Socket created
} else {
    // Else not ...

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

3 голосов
/ 14 марта 2012

Измените условие на if(input!=null && input.equals("")) ... ваш input будет нулевым, если вы нажмете кнопку отмены в диалоговом окне ввода. Это вызовет NullPointerException при вызове input.equals("").Так что просто добавив нулевую проверку перед вашим состоянием ...

2 голосов
/ 14 марта 2012

или просто if("".equals(input)).

1 голос
/ 14 марта 2012

Простое решение будет:

if(input != null && input.equals(""))
...