2

我想检查带有验证循环功能的文本字段列表

如果有人可以解释我如何做到这一点;)

我这样做:

 public void  validation()
    {
       List<String> list = new ArrayList<>();
       list.add("LastNameTextField");
       list.add("nameTextField");
       list.add("ageTextField"); 
       list.add("AdressTextField");        
       list.add("PhoneTextField1");        


       for(String check :list )
       {
          if(validator((check.toString()).toString()))
/*here i just want to get the field name and this value */
             JOptionPane.showMessageDialog(null, check+ " Empty value");
       }


    }

    public static boolean validator(String TextFieldTextToCheck)
    {
       if ((TextFieldTextToCheck== null) || (TextFieldTextToCheck.length() == 0)) {
            return true ;
        }
       else return false;
    }

如果有人可以提供帮助,我找不到获取字段值的方法,
谢谢您的时间

4

2 回答 2

2

作为记录,我没有分配 Java 经验。如果我理解正确,您正在尝试验证 GUI 中几个 TextField 的内容。并且验证只确保文本字段为空。我建议不要使用文本字段名称的集合,而只需使用对要验证的文本字段的引用集合。

因此,您的 ArrayList 将填充文本字段引用:

ArrayList<TextField> textFields = new ArrayList<TextField>();
textFields.add(textbox1);
textFields.add(textbox2);
textFields.add(textbox3);
textFields.add(textbox4);

您像以前一样遍历 ArrayList。我使用 System.Out 调用进行自己的测试。:

for(TextField textField : textFields) {
    if(validateTextField(textField)) {
        //JOptionPane.showMessageDialog(null, textField.getText() + " Empty value");
        System.out.println(textField.getName() + " has an Empty value");
    }
}

验证函数现在看起来像这样。我为 NULL 引用添加了一个测试,但你可以忽略它。:

public static boolean validateTextField(TextField textField) {
    if(textField == null) throw new NullPointerException("The validate function received a null textfield reference. Check your loop.");
    return textField.getText().length() == 0;
}
于 2012-12-01T19:24:17.367 回答
1

你的if条件不正确。

    if(validator((check.toString()).toString()))

应更正为:

   if(YourClass.validator(check))

解释:

  1. check已经是字符串。没有必要调用toString()它。

  2. validator方法是一个静态方法,所以调用它的static方式是你的类名YourClass.validator在哪里。YourClass

  3. validator方法返回booleanif期望boolean,因此无需再次获取字符串。

于 2012-11-28T19:35:44.890 回答