2012-03-14 34 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(""))