组合InputVerifiers

时间:2012-09-12 18:22:21

标签: java swing input validation

Swing API是否具有组合InputVerifiers的类?例如,我在当前项目中有三个InputVerifiers:

  1. NotEmptyInputVerifier - 验证文本字段是否为空
  2. PositiveIntegerInputVerifier - 验证文本字段是否包含正整数
  3. YearInputVerifier - 验证文本字段是否包含四位数年份
  4. NotEmptyInputVerifier需要用于所有输入,无论是字符串还是数字。 PositiveIntegerInput需要检查文本字段是否为空另外检查输入字符串是否只包含数字。 YearInputVerifier还需要检查输入是否正好是四位数,前导数字非零。

    现在每个都建立在另一个上。我可以通过组合或继承来轻松实现这一点。看起来这种模式在Swing应用程序中经常出现,我认为一个小的包装类,比如说AndInputVerifier,对于属于Swing API非常有用。但是,我无法找到一个,所以我认为它不存在。 - (

    如果不在Swing API中,是否有人知道这是否存在于第三方软件包中?

1 个答案:

答案 0 :(得分:3)

javadoc没有为InputVerifier定义任何子类,因此它在JVM中不存在。

现在,实现你想要的东西并不复杂:

import javax.swing.InputVerifier;
import javax.swing.JComponent;

public class CombinedInputVerifier extends InputVerifier {

    private InputVerifier[] verifiers;

    public CombinedInputVerifier(InputVerifier... verifiers) {
        this.verifiers = verifiers;
    }

    @Override
    public boolean verify(JComponent input) {
        for (InputVerifier verifier : verifiers) {
            if (!verifier.verify(input)) {
                return false;
            }
        }
        return true;
    }

}