2012-05-04 173 views
0

我正在使用netbeans和Java SE編寫一個簡單的GUI,我似乎無法獲得輸入驗證以正常工作。我有一個JTextField和2個JPasswordField對象,我想在用戶點擊提交按鈕時檢查這些字段是否爲空。它適用於密碼字段如果他們留空,但是如果我輸入的東西到用戶名字段,它打印數據已提交,當其他表單元素尚未填充數據。下面是下面的代碼,任何援助將不勝感激....表單驗證無法正常工作

// test that none of the fields are empty before submitting form data 
if (!username_input.getText().isEmpty() && !password_input1.getPassword().toString().isEmpty() 
       && !password_input2.getPassword().toString().isEmpty()) 
     { 
      System.out.println("Data has been submitted!"); 
     } 
     else 
     { 
      System.out.println("Form has not been filled in correctly!\nPlease try again"); 
     } 

回答

1

使用類似

!username_input.getText().toString().equals("")&& 
!new String(password_input1.getPassword()).equals("") && 
!new String(password_input2.getPassword()).equals("") 
+1

出於安全原因,'getText'被**棄用**。改爲使用'getPassword'方法。 –

+0

@PaulVargas更新以反映這一點。 – Zar

0

更改boolean expression到:

!username_input.getText().isEmpty() && 
password_input1.getPassword().lenght == 0 && 
password_input2.getPassword().lenght == 0 

getPassword()返回char array,你需要檢查lenght == 0空值的方法在JPasswordField

+0

謝謝,其實我設法找出答案回來,他們如何填寫密碼字段的數據讀取該笑,有點怪異之前,即使他們在技術上是一個長度爲0。 ..你碰巧知道背後的原因嗎? –

+0

@MatthewPigram'password_input1.getPassword()。toString()'實際上是在char []上調用的toString()。它可能只是打印數組的參考。所以它永遠不會是空的。 – tenorsax