Java验证(javafx)

验证是核心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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WAP自助建站 我编程之路的启蒙

如题所示的这篇文章是我心血来潮在网上搜索到的&#xff0c;写的挺让我感同身受的&#xff0c;不妨先看一下原文吧。 原文 不知是偶然还是“冥冥定数”&#xff0c;最后一次访问娃派建站&#xff08;wap.ai&#xff09;已有数十月之久了&#xff0c;突然心血来潮想看看曾经的建…

React事件绑定几种方法测试

前提 es6写法的类方法默认没有绑定this&#xff0c;不手动绑定this值为undefined。 因此讨论以下几种绑定方式。 一、构造函数constructor中用bind绑定 class App extends Component {constructor (props) {super(props)this.state {t: t}// this.bind1 this.bind1.bind(…

初始socket模块和巧解粘包问题

1.什么是socket&#xff1f; 两个进程如果需要进行通讯最基本的一个前提能够唯一的标示一个进程&#xff0c;在本地进程通讯中我们可以使用PID来唯一标示一个进程&#xff0c;但PID只在本地唯一&#xff0c;网络中的两个进程PID冲突几率很大&#xff0c;这时候我们需要另辟它径…

100325 雨

回家以后怎么样&#xff1f; 感冒没有严重吧&#xff1f; 你也多喝水 我好些了 鼻涕不像昨天那么多了 就是嗓子疼 药吃了 喝了不少水了转载于:https://www.cnblogs.com/loverain/archive/2010/03/25/1694567.html

Java的挥发性修饰符

不久前&#xff0c;我编写了一个Java servlet过滤器&#xff0c;该过滤器在其init函数中加载配置&#xff08;基于web.xml的参数&#xff09;。 筛选器的配置缓存在私有字段中。 我在字段上设置了volatile修饰符。 后来&#xff0c;当我检查Sonar公司以查看是否在代码中发现任…

webpack常用loader和plugin及打包速度优化

优化 或 也可以用&#xff1a; 备用&#xff1a; 慎用的配置&#xff0c;用的不好会增加打包时间&#xff1a; 代码丑化插件&#xff1a; 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

nvl 函数

nvl(oie.is_eval,N) <> Y 理解成 oie.is_eval <> Y 转载于:https://www.cnblogs.com/wangchuanfu/p/10818274.html

在自定义HttpHandler中如何使用Session

今天我写了一段程序在HttpHandler中使用Session。结果Session对象报错&#xff0c;“未将对象引用设置到对象的实例”&#xff0c;我郁闷半天&#xff0c;不知道怎么回事。结果我google了一下&#xff0c;原来也有人碰到过这种情况哦。呵呵。网上也有很多人说出了这些问题。解决…

SSH登录太慢(等很久才提示输入密码)的问题

SSH登录太慢(等很久才提示输入密码)的问题 SSH 登录太慢可能是 DNS 解析的问题&#xff0c;默认配置下 sshd 初次接受 ssh 客户端连接的时候会自动反向解析客户端 IP 以得到 ssh 客户端的域名或主机名。 如果这个时候 DNS 的反向解析不正确&#xff0c;sshd 就会等到 DNS 解析超…

开发Eclipse插件

最近&#xff0c;我开始与团队合作开发Eclipse插件。 团队开发了一个很棒的插件&#xff0c;可以实现预期的目的。 因此&#xff0c;我签出了源并尝试构建它。 项目源包含所有必需的库&#xff0c;并且只能在Eclipse中构建。 在当今不断交付的世界中&#xff0c;这是一个主要障…

react-native 热更新react-native-pushy集成遇到的问题

主要步骤按官方文档实现&#xff0c;这里只记录遇到的一些小坑 官方文档 run-android时NDK报错 前提是NDK已安装并且环境变量已设置 根据报错提示在 android/local.properties文件里加入ndk.dir~/Library/Android/android-ndk-r10e //这里改成你自己的ndk路径 cxxbridge找…

[转]在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录...

[转]在资源管理器中使鼠标右键增加一个命令&#xff0c;运行cmd&#xff0c;同时使得当前路径为资源管理器当前的目录 http://www.cnblogs.com/skywind/archive/2009/05/22/1487138.html 1,找开注册表编辑器&#xff1b; 2,找到HKEY_CLASSES_ROOT\Folder\shell&#xff1b; 3,在…

Keil5 仿真测试出现Cannot Load Flash Device Description 解决方法

1.用ST的烧录软件检测&#xff0c;可以烧录对应的Hex文件。 2.点击魔术棒&#xff0c;Debug选项卡检测芯片型号是否和当前芯片对应 3.在Flash Download选项卡中检查发现没有对应的芯片型号 4.点击Add 选项&#xff0c;选择对应的Flash类型如图&#xff1a; 添加Flash类型后&…

Spring,REST,Ajax和CORS

假设您正在为客户端开发基于JavaScript的项目&#xff0c;并且他通过其余的Web服务向服务器发出Ajax请求&#xff0c;那么您可能会遇到一些麻烦&#xff0c;尤其是如果双方都在单独的域中。 实际上&#xff0c;出于安全原因&#xff0c;未授权从一个域A到另一域B的Ajax请求。 …

位运算实现加减乘除四则运算(Java)

本文是继《一文了解有趣的位运算》的第二篇文章. 我们知道&#xff0c;计算机最基本的操作单元是字节(byte)&#xff0c;一个字节由8个位(bit)组成&#xff0c;一个位只能存储一个0或1&#xff0c;其实也就是高低电平。无论多么复杂的逻辑、庞大的数据、酷炫的界面&#xff0c;…

消息(6)——WCF,构建简单的WCF服务,MTOM编码

构建一个简单的WCF服务。以Web服务类似的步骤由IIS进行宿主服务。建立的步骤&#xff1a;1 新建3.5网站2 添加WCF服务&#xff0c;自动生成契约接口与实现&#xff0c;这里改动一下&#xff0c;添加个字串参数&#xff1a;[ServiceContract]public interface IFirstService{[Op…

Hadoop—MapReducer统计文件的单词出现的个数

1. MapReduce 统计文件的单词出现的个数 Mapper: 处理具体文本&#xff0c;发送结果 Reducer: 合并各个Mapper发送过来的结果 Job: 制定相关配置&#xff0c;框架 Mapper package cn.itcast.hadoop.mr.wordcount;import java.io.IOException;import org.apache.hadoop.io.LongW…

从框架到平台

当我将近十年前作为Java开发人员开始我的职业生涯时&#xff0c;该行业正在经历革命性的变化。 Spring框架&#xff08;于2003年发布&#xff09;Swift发展起来&#xff0c;并成为庞大的J2EE平台的严重挑战者。 经过过渡时间后&#xff0c;我很快发现自己赞成使用Spring框架而不…

关于setTimeout和setInterval的函数参数问题

今天在写验证码倒计时小demo时&#xff0c;用了如下代码&#xff1a; window.setTimeout(count(num),1000);这样直接使用将使count函数立即执行&#xff0c;并将返回值传递给setTimeout函数作为参数&#xff0c;其结果并不是真正需要的&#xff0c;所以会出现问题。 方法一 …

课堂作业2

1、动手动脑 阅读示例: EnumTest.java&#xff0c;运行它&#xff0c;分析运行结果&#xff1f;你能得到什么结论&#xff1f;你掌握了枚举类型的基本用法了吗&#xff1f; public class EnumTest {public static void main(String[] args) {Size sSize.SMALL;Size tSize.LARGE…