2013-02-15 17 views
0

我用這個代碼,以確保從文本框每個給定的數據是正確的。檢查JTextField中給出的數據

但在dateTextField,當我給它任何東西,或保留空白,它的錯誤信息顯示,但是當我點擊保存按鈕,這些數據將被保存到我的JTable!

哪裏是我的錯?

public class AddBookDialog extends javax.swing.JDialog { 

public AddBookDialog(JFrame owner){ 
    super(owner,"New Book",true); 
    ... 
    } 
BookInformation bookinform; 

private void OkButtonActionPerformed(java.awt.event.ActionEvent evt) { 
    bookinform=new BookInformation(); 

     if(!BookIDControl()){ 
      return; 
     } 

     if(!BookNameControl()){ 
      return; 
     } 

     if(!BookDateControl()){ 
      return; 
     } 

     bookinform.setBorrowStatus("No"); 

     AddBookDialog.this.dispose(); 

} 

public BookInformation getBookInfos() throws NullPointerException{ 
    return bookinform; 
} 
    public boolean BookNameControl(){ 
     bookinform.setBookName(BookNametextfiled.getText()); 
    if(bookinform.getBookName().trim().isEmpty()){ 
     errorLable.setText("Empty Book Name"); 
     return false; 
    } 

    if(havedigit(bookinform.getBookName().trim())){ 
     errorLable.setText("Book Name Have Digit"); 
     return false; 
     } 
    return true; 
    } 

    public boolean BookDateControl(){ 
    bookinform.setBookDate(BookDatetextfield.getText().trim()); 
    if(bookinform.getBookDate().trim().isEmpty()){ 
     errorLable.setText("Empty Book Date"); 
     return false; 
    } 
     else if(haveSpace(bookinform.getBookDate().trim())){ 
     errorLable.setText("Space in Book Date!"); 
     return false; 
    } 

    else if(haveletter(bookinform.getBookDate().trim())){ 
     errorLable.setText("Letter in Book Date"); 
     return false; 
    } 
     return true; 
    } 

    public boolean BookIDControl(){ 
    bookinform.setBookID(BookidTextfield.getText().trim()); 
    if(bookinform.getBookID().trim().isEmpty()){ 
     errorLable.setText("Empty Book ID"); 
     return false; 
    } 

    if(haveSpace(bookinform.getBookID().trim())){ 
     errorLable.setText("Space in Book ID !"); 
     return false; 
    } 

    if(haveletter(bookinform.getBookID().trim())){ 
     errorLable.setText("Letter in Book ID"); 
     return false; 
    } 
    return true; 
    } 
... 

二等:

public class AllBooksM extends JFrame implements ActionListener{ 
... 
if(e.getSource()==AddBookButton){ 
    AllBooks allBooks=new AllBooks(); 
    AddBookDialog add_book=new AddBookDialog(AllBooksM.this); 
    add_book.setVisible(true); 
    BookInformation B_info=add_book.getBookInfos(); 
    if(B_info != null){ 
     allBooks.AddRow(B_info); 
    } 
// bookcount(); 

    } 
... 
    } 

我的輸出:

26  thired  62  Yes 
29  sixth  92  No 
35  vff  53  No 
34332  dsds   null 
3434  ssdas   null 
222  fgfgf   null 
77  sds   null 
+0

如果沒有,則數據將被保存在JTable的空,那是正常的! – 2013-02-15 08:52:26

+0

@Yohan我想強制用戶輸入正確的數據或單擊取消並處理頁面! – Sajad 2013-02-15 08:53:37

+0

內「OkButtonActionPerformed」,如果所有的布爾方法調用是「假」,那麼你需要顯示的消息,而不是走在前面。這是你需要的嗎? – 2013-02-15 09:01:37

回答

3

好下面的代碼,如果 「BookDatetextfield.getText()」 爲NULL,則每次調用TRIM( )方法會拋出一個異常,如果你的應用沒有死掉,那是因爲你正在捕獲異常。

public boolean BookDateControl(){ 
     bookinform.setBookDate(BookDatetextfield.getText().trim()); 

     if(bookinform.getBookDate().trim().isEmpty()){ 
      errorLable.setText("Empty Book Date"); 
      return false; 
     } else if(haveSpace(bookinform.getBookDate().trim())){ 
      errorLable.setText("Space in Book Date!"); 
      return false; 
     } else if(haveletter(bookinform.getBookDate().trim())){ 
      errorLable.setText("Letter in Book Date"); 
      return false; 
     } 

     return true; 
    } 

一個解決正在做某些驗證之前,如果你把spring.jar,他們有一些方法,這些方法非常有用,那麼你的代碼將是這樣的:

public boolean BookDateControl(){ 
     if(!StringUtils.hasLength(BookDatetextfield.getText()) || !StringUtils.hasText(BookDatetextfield.getText())){ 
      errorLable.setText("Empty Book Date"); 
      return false; 
     } 
     bookinform.setBookDate(BookDatetextfield.getText().trim()); 

     if(bookinform.getBookDate().trim().isEmpty()){ 
      errorLable.setText("Empty Book Date"); 
      return false; 
     } else if(haveSpace(bookinform.getBookDate().trim())){ 
      errorLable.setText("Space in Book Date!"); 
      return false; 
     } else if(haveletter(bookinform.getBookDate().trim())){ 
      errorLable.setText("Letter in Book Date"); 
      return false; 
     } 

     return true; 
    } 

的方法,如果字符串爲null或零長度,則length將返回false。 如果字符串有多個空格,hasText將只返回true。

+0

謝謝@Deceiver,樂於助人的答案。 – Sajad 2013-02-15 10:37:04