2013-10-31 23 views
0

所以我想創建一個按鈕的驗證器,它必須檢查3個文本框,其中一個是IP地址。所以基本上用戶必須自己輸入完整的IP地址。Java IP Validator

所以我遇到了一個不需要的語法錯誤,我相信這是由於textfield造成的。

我試圖文本字段轉換成字符串,然後經過驗證,但只是似乎使情況變得更糟

private class theValidator implements ActionListener{ 

    public void actionPerformed(ActionEvent e) 
    {   
     String textIP = txfIP.getText(); 
     txfIP.setInputVerifier(new InputVerifier() { 
      Pattern pat = Pattern.compile("\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\."+ 
        "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + 
        "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\." + 
        "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b"); 

      public boolean shouldYieldFocus(JComponent input) { 
       boolean inputOK = verify(input); 
       if (inputOK) { 
        return true; 
       } 
       else { 
        Toolkit.getDefaultToolkit().beep(); 
        return false; 
       } 
      } 
      public boolean verify(JComponent input) { 
       JTextField field = (JTextField) input; 
       Matcher m = pat.matcher(field.getText()); 
       return m.matches(); 
      } 
     }); 
} 
} 
+0

你需要分號那裏完成陳述。你有沒有試過編譯器建議? http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html \ – kosa

回答

1

1)我沒有看到一個右括號爲txfIP.setInputVerifier(..

我d建議使用一些像Eclipse這樣的編輯器來編寫代碼,這樣你會發現很容易發現這樣的錯誤。

2)至於驗證ip地址的正則表達式,你可以試試這個。希望有所幫助。

IPADDRESS_PATTERN = 
     "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + 
     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + 
     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." + 
     "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$"; 
+0

我有一個評論意見的是它的支架 – user2763100

+0

不,你錯過了「);」大括號是「新的InputVerifier(){..」 – ajc

+0

是的,我發現了正確的發短信後,謝謝:)猜我應該停止編程後,看看直10小時代碼^ _ ^ – user2763100