2012-03-14 2 views
2

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

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

Во-первых, я делаю подключение к серверу, а затем подключаю клиентское соединение следующим образом.

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

, что озадачивает меня, что если я нажимаю ввести в поле диалога без внесения какой-либо записи ... i.o.w без указания Ipaddress подключения к розетке производится независимо. Почему это?

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

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

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

Сердечные приветы Арийский

ответ

4

Вобще:

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 ... 

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

3

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

1

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

if(input != null && input.equals("")) 
Смежные вопросы