2013-02-15 27 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