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样式类“错误”添加到每个有错误的控件中。 这使程序员只要在控件上附加了错误类,就可以使用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

javafx 教程

javafx 教程_Java验证(javafx)相关推荐

  1. javafx 教程_Java,JavaFX的流畅设计风格进度栏

    javafx 教程 按照承诺,刚刚发布的Java JavaFX主题JMetro 4.6版为进度栏带来了新样式. 进度栏有两种可能的状态:确定和不确定,新的JMetro版本具有这两种状态. 在本文中,我 ...

  2. JavaFx教程-01初识javaFX

    什么是JavaFX JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者用来设计.创建.测试.调试和部署富客户端程序,和Java一样跨平台. JavaFX特点 官方对于JavaFX的解释如 ...

  3. javafx 教程_用JavaFX编写图块引擎

    javafx 教程 随着JavaFX嵌入式版本的问世,我们的框架对于游戏开发变得越来越有趣,因为我们现在可以瞄准平板电脑和智能手机等小型消费类设备. 因此,我决定对JavaFX进行更多的游戏编写实验. ...

  4. javafx 教程_集成JavaFX和Swing

    javafx 教程 我刚刚完成了对使用Swing的应用程序组件的重写,现在使用的是JavaFX,最后得到了与更大的swing应用程序集成的JavaFX组件. 这是一个很大的应用程序,重写花了我一段时间 ...

  5. javafx 教程_集成JavaFX和Swing(修订版)

    javafx 教程 我刚刚完成了对使用Swing的应用程序组件的重写,现在使用的是JavaFX,最后得到了与更大的swing应用程序集成的JavaFX组件. 这是一个很大的应用程序,重写花了我一段时间 ...

  6. javafx 教程_Swing和JavaFX:使用JFXPanel

    javafx 教程 我很快将不得不在基于Swing的胖客户端中处理JavaFX –哦,很抱歉,我的意思是"多层富客户端"! 因此,这使我来看看JFXPanel . JFXPanel ...

  7. JavaFX开发教程-什么是JavaFX?

    JavaFX教程目录 JavaFX教程-什么是JavaFX? 1.JavaFX是基于java语言的 图形化界面工具箱,带有大量的内置组件,如按钮,文本字段,表格,树,菜单,图表等 2.JavaFX支持 ...

  8. 【JavaFx教程】第三部分:与用户的交互

    第3部分的主题: 在表中反应选择的改变(TableView中). 增加增加,编辑和删除按钮的功能. 创建自定义弹出对话框编辑人员. 验证用户输入. 响应表的选择 显然,我们还没有使用应用程序的右边.想 ...

  9. javafx 调用java_Java验证(javafx)

    javafx 调用java 验证是核心javafx框架所缺少的一件事. 为了弥补这一空白, controlsfx中已经存在一个第三方验证库 . 但是,我有一个问题:它不是在考虑FXML的情况下创建的. ...

最新文章

  1. python文本操作
  2. vue+node+mongodb 搭建一个完整博客
  3. android信息中字符个数,在android中指定编辑文本中的字符数
  4. ASP.Net服务性能优化原则
  5. FreeRTOS---堆内存管理(一)
  6. python中代理模式分为几种_Python设计模式之代理模式实例详解
  7. mysql 3.23_2018-3-23 13周5次课 MySQL常用操作(下)
  8. Python——EM(期望极大算法)实战(附详细代码与注解)(二)
  9. MDaemon日志报错:550 aa@*.com must check for new mail first
  10. 微信【PC电脑版】消息提示音怎么还原
  11. oracle+bmp转为txt,Bmp2Txt下载-图像转换成文字(Bmp2Txt )下载1.0-西西软件下载
  12. The Book of Qt4 : The Art of Building Qt Application 阅读笔记
  13. php 批量上传多个文件,小白浅析PHP中的单文件、多文件、批量上传
  14. Spring之Bean作用域
  15. 总结了几款好用的思维导图软件
  16. 当我跨过沉沦的一切,向着永恒开战的时候,你是我的军旗。——王小波
  17. 对比极米Z6X Pro和RS Pro 2,极米H5值得入手吗?极米H5评测来了
  18. 进程互斥锁,队列,IPC进程间通信,生产者与消费者,线程,线程对象的属性,先行互斥锁...
  19. 二叉树中序遍历(递归+非递归)Java
  20. Typora导出PDF时,对PDF格式的修改

热门文章

  1. python68个内置函数_新手入门!68个Python内置函数建议收藏学习
  2. oa系统服务器地址怎么查找,oa系统的服务器地址怎么看
  3. 图解java虚拟机_分享java虚拟机原理图解
  4. Listener method could not be invoked with the incoming messageEndpoint handler details:Method
  5. 你的生命有什么可能 读书笔记
  6. vue导出js中的函数_js中的函数
  7. C++的游戏--贪吃蛇
  8. 记一次线上微信公众号迁移遇到的坑
  9. 造价小帮手_一项难以获得大流行骗子帮手的工作
  10. 【C++】1、C++ 11新特性