0

このコードを使用して、テキストフィールドからの各データが正しいことを確認します。

しかし、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
4

1 に答える 1

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 または長さ 0 の場合、メソッド as length は false を返します。hasText は、文字列に複数の空白が含まれている場合にのみ true を返します。

于 2013-02-15T09:17:05.043 に答える