点击按钮时进行火焰验证(Java Swing)

3

需要为触摸屏设计一个Java Swing应用程序(到处都是大按钮),其中包括许多由输入字段(文本框、组合框、复选框、单选按钮等)组成的表单 + 一个保存数据的按钮。

我需要一种“通用”方式来实现验证器(必填、仅数字、正则表达式等),这些验证器在按钮点击时触发,显示验证摘要(很可能在消息框中),就像ASP .NET的验证器系统一样,在同一验证组中将一堆验证器分配给您的输入字段和按钮,并且只有在每个验证器通过测试之后才会触发单击事件。

问题是如何实现或使用哪个框架来实现这种验证样式?

到目前为止,我在网上看到了3个选项,但它们都不符合我的需求:

  • Java Swing的InputVerifier类:这很简单而且不错,但仅在输入失去焦点时起作用,对于触摸屏用户来说可能非常烦人。

  • Simple Validation API:这是最接近我的验证样式的API,但似乎与在底部显示错误的验证面板紧密耦合。我可以使用此API的变体来更改它在屏幕上显示错误的方式。

  • JGoodies验证:看起来太强大了,但找不到任何简单的示例,并且我不需要实现任何模型模式,因为这个框架似乎需要。

1个回答

0

OVal(http://http://oval.sourceforge.net/)可能完全满足您的需求。

假设您有一个占位符,用于存储来自表单的所有值。当用户提交表单时,可以使用实际数据构建并填充它。 OVal允许您为类字段定义约束:

public class BusinessObject {

  @NotNull
  @NotEmpty
  @Length(max=32)
  private String name;

  ...
}

有了这个定义,您可以轻松触发验证过程。OVal将为您提供违规列表,因此您可以轻松构建摘要对话框。

Validator validator = new Validator();
BusinessObject bo = new BusinessObject();

// collect the constraint violations
List<ConstraintViolation> violations = validator.validate(bo);

您可以使用getter约束来消除中间占位符。

public class BusinessObject {

  @IsInvariant
  @NotNull 
  @Length(max = 4)
  public String getName() {
  ...
  }
}

请注意,OVal 遵循清晰的设计原则,并且可以轻松扩展。无论如何,它提供了相当多的开箱即用功能:
  • 使用表达式语言的条件约束
  • 嵌套属性的约束
  • 递归验证
  • 方法参数的约束
  • 预设条件的脚本表达式
  • 方法返回值的约束
  • 探针模式以简化 UI 用户输入验证
  • 等等

请参见 http://oval.sourceforge.net/userguide.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接