Java - 输入验证器

时间:2013-11-14 21:44:09

标签: java validation inputverifier

我只是创建了这个具体但我对记录这个有点困惑。我只是坚持解释最后几行所做的事情:

class MyVerifier extends InputVerifier {

public boolean verify(JComponent input) {

  if (input==id) {
    return validId();

}

 else if (input==name) {
     return validName();

 }

 return false;
}

    public boolean validId() {
      boolean status;
      String theID = id.getText();
      Pattern pattern = Pattern.compile("\\d{8}");
      Matcher matcher = pattern.matcher(theID);
      if (matcher.matches()) {
          status = true;
      }
      else {
          status = false;
      }
       return status;
    }
    public boolean validName() {
       boolean status;
       String theName = name.getText();
       Pattern pattern = Pattern.compile("[A-za-z0-9 ]+");
       Matcher matcher = pattern.matcher(theName);
       if (matcher.matches()) {
           status = true;
       }
       else {
           status = false;
       }
       return status;
    }
}

你可以一个一个地解释这些具体的问题吗?

/**
 * @param  o    the object corresponding to the user's selection
 */
@Override
public void tell(Object o) { -- Where has this come from ?
    deptCode.setText(o.toString());
}

@Override
public void actionPerformed(ActionEvent e) {
    if (e.getSource() == submit) {
        MyVerifier test = new MyVerifier();

        if (Staff.getStaff(id.getText()) == null && test.verify(id) &&
                test.verify(name)) {
            System.out.println("YAY");-- What is this doing
        }
        else if (!(Staff.getStaff(id.getText()) == null)) {
            String errorMessage = "ID EXISTS: " + Staff.getStaff(id.getText()).toString(); -- What is this doing

            JOptionPane.showMessageDialog(theFrame, errorMessage, "Error",
                JOptionPane.WARNING_MESSAGE);-- What is this doing
        }
        else {
            System.out.println("Woops.");
        }
    }

    else if (e.getSource() == clear) {
        id.setText(null);
        deptCode.setText(null);
        name.setText(null);
    }
}

public static void main(String[] args) {
    Registration test = new Registration();
}
}

2 个答案:

答案 0 :(得分:0)

现在您已经了解了您要使用此程序完成的任务,请从一个干净的平板开始(如果需要,首先尝试使用您的第一次尝试)。重新开始通常比修复程序更容易。

答案 1 :(得分:0)

您的public void tell(Object o)方法似乎正在设置一个String,其中包含传递的对象的值。但是,由于您没有向我们展示您使用它的目的,因此我们无法确切知道。另一方面,您的其他问题非常明确:

System.out.println("YAY");

Staff.getStaff(id.getText)似乎正在检查字符串或文本文件中的名称和ID列表。仅当先前未使用提供的idname创建了工作人员时,此语句才会打印“YAY”。但既然你还没有告诉我们这些变量的位置,这只是我最好的猜测。

JOptionPane.showMessageDialog(theFrame, errorMessage, "Error", JOptionPane.WARNING_MESSAGE);

如果已有一名具有给定JOptionPaneid的职员,则会显示name警告消息。显然,您无法创建其他人拥有的帐户,因此如果确实如此,此JOptionPane会显示错误消息。