Java 检查给定数据的JTextField

Java 检查给定数据的JTextField,java,swing,jtextfield,Java,Swing,Jtextfield,我使用此代码来确保textfields中的每个给定数据都是正确的 但在dateTextField中,当我给它任何东西或将其留空时,它的错误消息会显示出来,但当我单击“保存”按钮时,该数据将保存到我的JTable中 我的错在哪里 public class AddBookDialog extends javax.swing.JDialog { public AddBookDialog(JFrame owner){ super(owner,"New Book",true); ...

我使用此代码来确保textfields中的每个给定数据都是正确的

但在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
下面的代码如果“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或长度为零,则方法as length将返回false。 hasText仅在字符串大于空格时返回true。

如果“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或长度为零,则方法as length将返回false。
hasText仅当字符串的空格数超过时才会返回true。

如果没有空格,则数据将保存为null,保存在JTable中,这是正常的@Yohan我想强制用户输入正确的数据,或者单击“取消并处理”页面!在“OkButtonActionPerformed”中,如果所有布尔方法调用都为“false”,则需要显示一条消息,而不是继续。这就是您所需要的吗?是的,我不想前进。如果没有任何内容,那么数据将以null形式保存在JTable中,这是正常的@Yohan我想强制用户输入正确的数据,或者单击“取消并处理”页面!在“OkButtonActionPerformed”中,如果所有布尔方法调用都为“false”,则需要显示一条消息,而不是继续。这就是你所需要的吗?是的,我不想再往前走了。谢谢你@欺骗者,帮助者回答。谢谢你@欺骗者,帮助者回答。