2013-02-15 2 views
0

Я использую этот код, чтобы гарантировать, что все данные из текстовых полей верны.Check 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

Если ничего нет, тогда данные будут сохранены как null в JTable, это нормально! –

+0

@Yohan Я хочу заставить пользователя ввести правильные данные или нажать кнопку «Отменить» и удалить страницу! – Sajad

+0

внутри «OkButtonActionPerformed», если все вызовы логических методов «ложны», тогда вам нужно отобразить сообщение, а не идти вперед. Это то, что вам нужно? –

ответ

3

Ну код ниже, если "BookDatetextfield.getText()" является пустым, то каждый раз, когда вы звоните триммер () исключение будет выбрано, и если ваше приложение не умрет, это связано с тем, что вы перехватываете исключение.

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; 
    } 

метод как length вернет false, если строка имеет нулевую или нулевую длину. hasText вернет true только в том случае, если строка содержит больше пробелов.

+0

Спасибо @Deceiver, полезный ответ. – Sajad

Смежные вопросы