java - 检查 JTextField 给定的数据

标签 java swing 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

最佳答案

下面的代码如果“BookDatetextfield.getText()”为空,那么每次调用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。

关于java - 检查 JTextField 给定的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14890861/

相关文章:

java - 如何创建由 Map 支持的可变列表

java - 何时在 Hibernate 中使用 @OneToOne 注释?

java - Windows 7 上的 JComboBox 有渲染瑕疵

java - 多个 JPanel 一个在另一个之上

Java Actionlistener 提交按钮

java - 如何在java中使用查询字符串发送超过255字节的字符串

java - 如何处理我给定代码中的 EOF 异常

java - 我如何在一个类中拥有 JTextArea,并打印到另一个类中的 JTextArea?

java - 创建一个仅允许用户在 Java 中输入整数/ double 的文本字段(或类似字段)的简单方法是什么?

java - 将焦点设置为 JList 并将光标置于 textField swing java 自动完成上