2012-03-14 84 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); 

令我百思不解的作为如果我按不作任何条目在对话框中输入...不指定ip地址到插座的连接i.o.w是不管做。这是为什么?

为了克服这个“问题”,我决定尝试让用户做出的对话框

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

你不必抛出异常,你可以跳过插座创建时输入是坏的。你也可以在注意到用户的地方创建一个别的分支。

3

更改条件if(input!=null && input.equals("")) ...你input如果按在输入dialog.This取消将引发NullPointerException当你调用input.equals("")将是无效的。所以刚才添加空校验你的条件之前...

2

或只是if("".equals(input))

1

简单的解决办法是:

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