2013-11-28 100 views
0

我試圖顯示一個消息框時,無論是用戶名或密碼文本框爲空,但是當我運行該項目唯一的文本框顯示的是「JOptionPane.showMessageDialog(NULL,」您的用戶名或密碼不正確「) ;」請幫忙,謝謝!檢查空的文本框

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    String user=txtUsername.getText(); 
    char[] pass=txtPassword.getPassword(); 

    if(user == null){ 
    JOptionPane.showMessageDialog(null,"Username Field is empty"); 
    } 
    else if(pass==null){ 
    JOptionPane.showMessageDialog(null,"Password Field is empty");  
    } 
    else{ 
    String sql="select * from account where username=? and password=?"; 

    try{ 
      pst=conn.prepareStatement(sql); 
      pst.setString(1,txtUsername.getText()); 
      pst.setString(2,txtPassword.getText()); 

      rs=pst.executeQuery(); 


      if(rs.next()){ 

       GridlockMain a=new GridlockMain(); 
       a.setVisible(true); 

      } 

      else{ 

       JOptionPane.showMessageDialog(null,"Your Username or Password is incorrect"); 
       txtUsername.setText(null); 
       txtPassword.setText(null); 

      } 

     } 
    catch(SQLException e){ 
      JOptionPane.showMessageDialog(null,e); 

     } 

}}

回答

1

JTextField.getText()不返回null如果你把它空。嘗試使用isEmpty方法在if條件檢查值。

String user=txtUsername.getText();// It return empty String "" 
            // even no data is entered. 

    if(user.isEmpty){ 
    JOptionPane.showMessageDialog(null,"Username Field is empty"); 
    } 
    ...... 
0

試試這個..

if(!user.length() > 0){ 
    JOptionPane.showMessageDialog(null,"Username Field is empty"); 
    } 
else if(!pass.length > 0){ 
    JOptionPane.showMessageDialog(null,"Password Field is empty");  
} 
0

它返回一個空字符串 「」 比較

StringUtils.isEmpty(txtUsername.getText()) 
-1
if (user.length() == 0) { 
     JOptionPane.showMessageDialog(null, "Username Field is empty"); 
    } else if (pass.length() == 0) { 
     JOptionPane.showMessageDialog(null, "Password Field is empty"); 
    } 
+0

我從來沒有聽說過一個字符爲長小於0的字符。如果你要解決這個問題,這個答案將被等同於subash的【答案】(http://stackoverflow.com/a/20263060/369450),這使得這個答案毫無意義。 – cpburnz

0

我也掙扎與文本驗證過程。我發現了一個非常簡單的方法來測試這個。在這裏,而不是使用JOptionPane顯示一條消息給用戶,我沒有讓他們進入,或按下按鈕。這裏是我的代碼:

//Validate whether user Has input some information: 
       if(UserNameTA.getText() == null || UserNameTA.getText().trim().isEmpty()) 
       { 
        btnEnter.setEnabled(false); 
       } 
       else 
       { 
        //Make a new JFrame for login 
        new ProfileHome().setVisible(true); 
        frame.dispose(); 
       } 
       btnEnter.setEnabled(true); 

我希望這至少能夠引導你成功。