validation文本字段并联系无文本字段

我有一个由一些文本字段(10)和一个TextArea组成的JFrame 。 我想validation所有文本字段并查看它们是否为空,并检查是否在其中一个文本字段中输入了10位数的联系人号码。 检查文本字段后,我想启用一个提交按钮,用于将所有这些数据提交到我的数据库。

我使用以下代码添加文本区域条件但它不起作用,给出错误: – 线程“AWT-EventQueue-0”中的exceptionjava.lang.NullPointerException

这是我使用的代码,但它不起作用: –

 public class DataEntered1 implements DocumentListener { private JButton button; List txtfields=new ArrayList(); JTextArea ta; public DataEntered1(JButton dbadd) { this.button=dbadd; } public void addTextField(JTextField txtfield) { txtfields.add(txtfield); txtfield.getDocument().addDocumentListener(this); } public void addTextArea(JTextArea ta) { this.ta=ta; ta.getDocument().addDocumentListener(this); } public boolean isDataEntered() { for(JTextField txtfield:txtfields) { if(txtfield.getText().length()==0) return false; } return true; } public boolean isData() { if(ta.getText().trim().length()==0) { return false; } return true; } public void insertUpdate(DocumentEvent e) { checkdata(); } public void removeUpdate(DocumentEvent e) { checkdata(); } public void changedUpdate(DocumentEvent e) { checkdata(); } public void checkdata(){ Boolean d1=isDataEntered(); Boolean d2=isData(); if(d1&&d2) button.setEnabled(true); } 

}

在validation所有文本字段后,有人可以帮助我启用按钮吗?

这是一个通用类,它将在一组文本字段中添加/删除文本时启用/禁用按钮。

它将DocumentListener添加到每个文本字段的Documenent中。 只有在每个文档中输入文本时,该按钮才会启用:

 import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.ArrayList; import javax.swing.*; import javax.swing.event.*; public class DataEntered implements DocumentListener { private JButton button; private List textFields = new ArrayList(); public DataEntered(JButton button) { this.button = button; } public void addTextField(JTextField textField) { textFields.add( textField ); textField.getDocument().addDocumentListener( this ); } public boolean isDataEntered() { for (JTextField textField : textFields) { if (textField.getText().trim().length() == 0) return false; } return true; } @Override public void insertUpdate(DocumentEvent e) { checkData(); } @Override public void removeUpdate(DocumentEvent e) { checkData(); } @Override public void changedUpdate(DocumentEvent e) {} private void checkData() { button.setEnabled( isDataEntered() ); } private static void createAndShowUI() { JButton submit = new JButton( "Submit" ); submit.setEnabled( false ); JTextField textField1 = new JTextField(10); JTextField textField2 = new JTextField(10); DataEntered de = new DataEntered( submit ); de.addTextField( textField1 ); de.addTextField( textField2 ); JFrame frame = new JFrame("SSCCE"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(textField1, BorderLayout.WEST); frame.add(textField2, BorderLayout.EAST); frame.add(submit, BorderLayout.SOUTH); frame.pack(); frame.setLocationByPlatform( true ); frame.setVisible( true ); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { createAndShowUI(); } }); } } 

还要检查是否在其中一个文本字段中输入了10位数的联系人号码。

您需要自定义isDataEntered()方法以添加对此附加要求的检查。

validation文本字段是空的,不能通过从textview获取文本并将其与“”进行比较来完成

假设您的TextField是textField。

 if (textField.getText().trim().length>0) { //TextField is empty } else { //TextField is not empty } 

同样,如果您想查看10位数的联系电话。

 if (textfield.getText().length == 10) { /* Here I'm not checking whether each character is a digit, but you can do so by iterating through each character and checking whether it's a digit using isDigit() method */ } else { //Not 10 characters } 

Java中用于跟踪JTextField文本内容变化的适当监听器是DocumentListener,您必须将其添加到JTextField的文档中:

 textField.getDocument().addDocumentListener(new DocumentListener() { // Enable the buttons here. });