验证是核心javafx框架所缺少的一件事。 为了填补这一空白, controlsfx中已经存在一个第三方验证库 。 但是,我有一个问题:它不是在考虑FXML的情况下创建的。 这并不是说它不是一个很好的库,只是错过了这个细节,对我来说这是不可行的。 因此,我决定创建自己的验证框架: FXValidation 。

怎么运行的

为了向您展示FXValidation的工作原理,让我们从头开始,向您展示一个使用该库时FXML文件的外观示例。 这是一个登录屏幕的简单示例,其中用户需要输入用户名和密码:

<Label><text>User Name:</text>
</Label>
<TextField fx:id="userName" id="userName"></TextField>
<Label><text>Password:</text>
</Label>
<PasswordField fx:id="password" id="password"></PasswordField><Button text="Submit" onAction="#submitPressed"></Button><fx:define><RequiredField fx:id="requiredField1" ><srcControl><fx:reference source="userName"></fx:reference></srcControl></RequiredField><RequiredField fx:id="requiredField2" ><srcControl><fx:reference source="password"></fx:reference></srcControl></RequiredField>
</fx:define><ErrorLabel message="Please enter your username"><validator><fx:reference source="requiredField1"></fx:reference></validator>
</ErrorLabel>
<ErrorLabel message="Please enter your password"><validator><fx:reference source="requiredField2"></fx:reference></validator>
</ErrorLabel>

在FXML代码段的开头,我定义了用于输入登录详细信息的文本字段和密码字段。 除此之外,还有一个提交按钮,以便用户可以将登录信息发送到系统。 之后是有趣的部分。 首先,我们定义几个RequiredField类型的验证器。 该验证器检查所输入的内容是否为空,如果是,则在标志中存储验证是否有错误。 FXValidation框架中还内置了其他类型的验证器,但我们将稍作介绍 。 最后,我们定义了几个ErrorLabel。 这是实现IValidationDisplay的节点,实现此接口的任何类都是一个类,其目的是在验证过程中发生错误时向用户显示信息。 当前,框架中只有此类之一:ErrorLabel。 最后,我们需要在用户单击“提交”按钮时调用验证,这是在控制器中的Submit方法上完成的:

public void submitPressed(ActionEvent actionEvent) {requiredField1.eval();requiredField2.eval();
}

这将触发对我们定义的验证器的验证。 如果有错误,ErrorLabels将显示在其中定义的错误消息。 验证器还有另外一件事:验证器生效后,它们将css样式类“ error”添加到每个有错误的控件中。 这使程序员只要在控件上附加了错误类,就可以使用css改变控件的样式。 程序员可以通过检查验证器中的hasErrors属性来检查验证过程中的错误。

这是我们的示例:

细节

从上面显示的内容可以看出,基本上涉及两种类型的类:

  • 验证器:负责检查目标控件( srcControl )是否符合验证规则。 如果没有,它将“错误”样式类附加到目标控件,将其hasErrors属性设置为true。 所有验证器都从ValidatorBase扩展。
  • 错误显示信息:负责通知用户验证发生了什么问题,可能是必填字段,字段内容没有必要的字符数,等等。所有这些类都实现IValidationDisplay

在库中,当前有3个验证器,并且只有一个错误“显示器”即ErrorLabel。 验证器如下:

  • RequiredField:检查目标控件( srcControl )是否具有内容,如果没有,则给出错误。
  • CardinalityValidator:检查目标控件( srcControl )是否至少具有最小字符数和最大最大字符数。
  • RegexValidator:根据给定的正则表达式检查目标控件( srcControl )的内容

就是这样。

翻译自: https://www.javacodegeeks.com/2014/08/validation-in-java-javafx.html

Java验证(javafx)相关推荐

  1. 01_Weblogic课程之概念篇:代理服务器,web服务器,应用程序服务器,JNDI概念,JTA概念,Java消息服务,Java验证和授权(JAAS),Java管理扩展,Web客户机,客户机应用程序

     1 什么是服务器 Weblogic中服务器分为两种,一种是受管服务器,另外一种是管理服务器. Weblogic课程(Weblogic是Oracle公司的,最开始的是BEA公司的) 一 系统管理 ...

  2. java ipv6校验_JS及java验证 IPV6,IPV4地址的 正则表达式 | 学步园

    JS 验证: ipv4地址验证: function queryDev(ip){ var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2 ...

  3. java验证身份证号码是否有效源代码

    转载自   java验证身份证号码是否有效源代码 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.t ...

  4. Java,JavaFX的流畅设计风格滑块

    JMetro的Java,JavaFX主题版本刚刚提高到4.2版. 此版本为Slider控件带来了新样式. 除此之外,您现在还可以看到一个弹出窗口,向您显示滑块的当前值. 新滑块样式 以下是旧的JMet ...

  5. Java,JavaFX的流利设计风格文本字段和密码字段

    我刚刚发布了Java版本4.5 ,JavaFX主题JMetro . 此版本为"文本字段"和"密码字段"添加了新样式. 和往常一样,受到Fluent Design ...

  6. JS及java验证 IPV6,IPV4地址的 正则表达式

    JS 验证: ipv4地址验证: function queryDev(ip){ var exp=/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2 ...

  7. JAVA验证字段正则表达式相关

    JAVA验证字段正则表达式相关 /***邮箱格式验证 */ public static boolean checkEmail(String email){boolean flag = false;tr ...

  8. Java验证时间格式是否正确

    Java验证时间格式是否正确 /*** @author * @Description 时间格式校验* @Version 1.0* @since */ public class IsLegalDate ...

  9. 张宇/王式安 考研数学 概率论争议题 【Java验证版】

    张宇/王式安 考研数学 概率论争议题 [Java验证版] 一.原题题目 1. 争议 2. 结论 二.代码实现 这个版本的代码有点乱,已更新Python代码,也许看起来好一些 链接 张宇/王式安 考研数 ...

  10. Java 验证表单工具类,史上最全

    Java 验证表彰工具类,包含各种验证如邮箱,密码,整数,等等,全的让你想不到 package com.wiker.utils; import java.util.regex.*; /**** @ve ...

最新文章

  1. Go 学习笔记(19)— 函数(05)[如何触发 panic、触发 panic 延迟执行、panic 和 recover 的关系]
  2. 30天敏捷生活(9-11):调整30天的节奏
  3. STM32接口FSMC/FMC难点详解
  4. yii2 modal弹窗之ActiveForm ajax表单异步验证
  5. 四十、Java中字节流和字符流介绍和区别
  6. java 一对一的关系_与休眠一对一关系 - java
  7. spring注解大全
  8. (26)VHDL实现或(数据流描述)
  9. 公平的反义词是什么?
  10. Vue项目实例(一)------背景
  11. MATLAB深度学习工具箱汇总
  12. 在windows 2008 R2上无法运行vc 2015的程序,显示缺少api-ms-win-crt-string-|1-1-0.dll的解决
  13. 设计分享 | STM32F103RCT6利用ULN2003驱动步进电机正反转
  14. java TIFF转JPG并压缩
  15. html单元格斜线分割,在网页中画单元格斜线分割
  16. 基于Android的驾校预约管理系统
  17. python 转百分比_编程要从娃娃抓起,北乔治亚大学教授的python编程指南在此
  18. 学习笔记【Java 虚拟机②】垃圾回收
  19. windows 文件在linux下运行显示no such file or directory
  20. 3D仿真学习笔记(七)-- 五轴精密数控机床坐标系设定

热门文章

  1. 2020蓝桥杯省赛---java---B---8(走方格)
  2. 强行覆盖远程的gitlab 出错
  3. android:background大小,小Demo小知识-android:foreground与android:background
  4. php移动代码,移动专区周级收录如何提交 复制这段php代码即可
  5. java sentence_Java Sentence類代碼示例
  6. 摘要算法与加密(以MD5算法为例)
  7. thinking-in-java(21)并发2
  8. 哈儿小波分解和重构(降维和升维)实现算法
  9. azure 部署java_jClarity:在Azure上升级到Java
  10. oracle adf_Fn函数来构建Oracle ADF应用程序