条件绑定

2024-04-25

我是 JavaFx 新手,我正在创建一个应用程序,用户必须填写一些表单,并且我想使用绑定“预先验证”它们。简单的事情,比如所有元素都不能为空,或者其中一些元素只能包含数字。这是我到目前为止所拥有的:

saveBtn.disableProperty().bind(Bindings.when(
            departureHourText.textProperty().isNotEqualTo("")
                    .and(isNumber(departureHourText.getText())))
            .then(false)
            .otherwise(true));

这是我的isNumber method:

private BooleanProperty isNumber(String string) {
    return new SimpleBooleanProperty(string.matches("[0-9]+"));
}

但无论我在文本字段中输入什么内容,该按钮都会被禁用。

任何帮助是极大的赞赏。

UPDATE

当我评估这个表达式时:departureHourText.textProperty().isNotEqualTo("")结果将是:BooleanBinding [invalid]


你的表情有点不对劲。

让我们尝试测试逻辑语句的两个部分:

saveBtn.disableProperty().bind(Bindings.when(
        departureHourText.textProperty().isNotEqualTo(""))
        .then(false)
        .otherwise(true));

上面的代码工作正常。当您向文本框中添加字符串时,您将收到一个按钮切换事件。

saveBtn.disableProperty().bind(Bindings.when(
        isNumber(departureHourText.getText()))
        .then(false)
        .otherwise(true));

上面的代码使按钮始终处于禁用状态。让我们研究一下原因。

让我们在 isNumber() 方法中添加一条 print 语句:

private BooleanProperty isNumber(String string) {
System.out.println("This was called");
return new SimpleBooleanProperty(string.matches("[0-9]+"));
}

如果我们在开始输入时查看何时执行它,我们会发现它仅在我们最初声明绑定时被调用!这是因为您的方法不知道何时被调用,因此绑定只能在最初看到它,此时它是 false,因为字段中没有数字。

我们需要做的是找到一种方法,以便当我们的文本属性更新时,它知道改变状态。如果我们以 isNotEqualTo() 为例,我们会发现我们可能想要寻找一种方法来以某种方式创建新的 BooleanBinding。

现在,我找到了一个函数,并从 github 链接进行了修改(https://gist.github.com/james-d/9904574 https://gist.github.com/james-d/9904574)。该链接指示我们如何从正则表达式模式创建新的 BooleanBinding。

首先,让我们创建一个新模式:

Pattern numbers = Pattern.compile("[0-9]+");

然后创建绑定函数:

BooleanBinding patternTextAreaBinding(TextArea textArea, Pattern pattern) {
BooleanBinding binding = Bindings.createBooleanBinding(() -> 
    pattern.matcher(textArea.getText()).matches(), textArea.textProperty());
return binding ;
}

这样我们现在就可以做您想做的事情了! 我们只需将您之前的函数更改为新的patternTextAreaBinding(TextArea textArea, Pattern pattern)函数,并传入我们的两个值,即您想要跟踪的textArea和您想要遵循的Pattern(我将上面的数字称为模式) 。

saveBtn.disableProperty().bind(Bindings.when(
        departureHourText.textProperty().isNotEqualTo("")
                .and(patternTextAreaBinding(departureHourText,numbers)))
        .then(false)
        .otherwise(true));

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

条件绑定 的相关文章

  • 在Maven中生成Version.java文件

    我有一个使用 Ant 脚本构建的 Java 项目 我正在尝试将项目转换为 Maven 其中一项任务生成一个名为 Version java 的 Java 源文件 其中包含编译时间戳的静态字符串表示形式 如下所示 package com foo
  • Jackson JSON + Java 泛型

    我正在尝试将以下 JSON 反序列化 映射到List
  • Android:如何暂停和恢复可运行线程?

    我正在使用 postDelayed 可运行线程 当我按下按钮时 我需要暂停并恢复该线程 请任何人帮助我 这是我的主题 protected void animation music6 music4 postDelayed new Runnab
  • “源兼容性”和“目标兼容性”有什么区别?

    之间有什么关系 区别sourceCompatibility and targetCompatibility 当它们设置为不同的值时会发生什么 根据工具链和兼容性 https docs gradle org current userguide
  • java程序有多少种结束方式?

    我知道使用 System exit 0 可以结束一个java程序 例如 如果我有一个JFrame窗口 它会关闭并结束程序 但我想知道还有多少其他方法 可以关闭它并结束程序 包括发生错误时 程序会被关闭 JFrame也会被关闭吗 添加到其他答
  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • 查看Java Agent修改的Java类的源代码

    我需要了解 Java 代理如何修改我的初始类 以便我能够理解代码的作用 build gradle configurations jar archiveName agent2 jar jar manifest attributes Prema
  • 使用 OkHttp 下载损坏的文件

    我编写的下载文件的方法总是会产生损坏的文件 public static String okDownloadToFileSync final String link final String fileName final boolean te
  • 在光标所在行强制关闭!

    嘿 我正在尝试创建一个应用程序来查找存储在 SQlite 数据库中的 GPS 数据 但我面临一个问题 我构建了一个 DbAdapter 类来创建数据库 现在我尝试使用以下函数从另一个类获取所有数据上的光标 public Cursor fet
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • Android - 存储对ApplicationContext的引用

    我有一个静态 Preferences 类 其中包含一些应用程序首选项和类似的内容 可以在那里存储对 ApplicationContext 的引用吗 我需要该引用 以便我可以在不继承 Activity 的类中获取缓存文件夹和类似内容 你使用的
  • Joshua Bloch 的构建器设计模式有何改进?

    早在 2007 年 我就读过一篇关于 Joshua Blochs 所采用的 构建器模式 的文章 以及如何修改它以改善构造函数和 setter 的过度使用 特别是当对象具有大量属性 其中大部分属性是可选的 时 本文对此设计模式进行了简要总结
  • 按降序排序映射java8 [重复]

    这个问题在这里已经有答案了 private static
  • 文本视图不显示全文

    我正在使用 TableLayout 和 TableRow 创建一个简单的布局 其中包含两个 TextView 这是代码的一部分
  • java实现excel价格、收益率函数[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android计算两个日期之间的天数

    我编写了以下代码来查找两个日期之间的天数 startDateValue new Date startDate endDateValue new Date endDate long diff endDateValue getTime star
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • Spring 作为 JNDI 提供者?

    我想使用 Spring 作为 JNDI 提供程序 这意味着我想在 Spring 上下文中配置一个 bean 可以通过 JNDI 访问该 bean 这看起来像这样

随机推荐

  • Android:想要在相机预览上放置剪影叠加

    我想知道如何在相机预览上添加剪影 到目前为止 我已经完成了以下示例 它只是预览相机 http developer android com reference android view TextureView html http develo
  • 快速排序和调整快速排序有什么区别?

    快速排序和调整快速排序之间的根本区别是什么 快速排序有何改进 Java 如何决定使用它而不是合并排序 正如蜥蜴比尔所说 调整的快速排序仍然具有与基本快速排序相同的复杂性 O N log N 平均复杂度 但调整的快速排序使用一些不同的方法来尝
  • UIScrollView 缩小具有 -ve 原点的视图

    我有一个 UIScrollView 在此我有一个 UIView 它的框架具有负原点 我需要限制滚动视图 以便您无法滚动整个视图 我已经在这个滚动视图中实现了缩放 缩放时 滚动视图将根据比例调整可缩放视图的大小 但它并不能调整原点 所以如果我
  • Python .NET WinForms - 如何将信息从文本框传递到按钮单击事件

    在回答我的问题之前 我正在 自学 学习 Python 和 NET CLR 如何相互交互 这是一次有趣的经历 但有时也是一次令人沮丧的经历 话虽如此 我正在使用 NET WinForm 它应该只是传递输入到文本框中的数据并通过消息框显示它 学
  • 货运公司如何决定是否重建部门?

    我正在考虑跳过货物中的依赖关系构建步骤 我有一个简单的项目 使用 3 个板条箱作为依赖项 在Cargo toml 我使用一次构建项目cargo build release 现在我有另一个项目 它使用其中提到的相同依赖项Cargo toml文
  • 重置流的状态

    我有一个问题与 stackoverflow 上的这个问题有点相似std cin clear 无法将输入流恢复到良好状态 https stackoverflow com questions 4960399 stdcin clear fails
  • 用逗号连接字符串并在每个元素周围加上引号

    我有以下字符串 s tring abcd efgh igkl mnop qrst uvwx yz 我想创建一个列表并用逗号分隔它并在每个元素周围加上引号 如下所示 some list abcd efgh igkl mnop qrst uvw
  • Amplify 的completeNewPassword 方法针对用户数据抛出 TypeError

    我尝试将自定义 UI 与 aws Amplify 结合使用 但遇到了 Auth completeNewPassword 问题 任何使用此方法的尝试都会引发错误Error in v on handler TypeError Cannot re
  • 即使我没有右键单击该节点,树视图节点也会突出显示

    我正在开发一个winform 在我的UI上有一个树视图 我发现即使我没有用鼠标右键单击该节点 树节点也会突出显示 例如 当我单击以下位置时 Node1将突出显示 但我真的不喜欢这种行为 因为我想在没有单击树节点时显示不同的上下文菜单 根节点
  • 如何将 CORS(跨源策略)添加到 NGINX 中的所有域?

    我创建了一个文件夹 用于提供静态文件 CSS 图像 字体和 JS 等 我最终会将文件夹 CNAME 到子域中 以便在 CDN 上使用 以便与我的 Magento 2 设置一起使用 我想允许所有域通过 CORS 跨源策略进行所有访问 并且我也
  • 从 C* 表中获取不同的分区键

    cqlsh 不允许嵌套查询 因此我无法将所选数据导出到 csv 我正在尝试使用以下命令从 cassandra 导出选定的数据 大约 200 000 行 单列 echo SELECT distinct imei FROM listener s
  • 如何在nodejs sdk v12中生成带有SAS签名的azure blob url?

    以前 在旧版 sdk 中 如 v2 您可以生成一个 sas url blob 的签名可共享 url 如下所示 var azure require azure storage var blobService azure createBlobS
  • 将架构名称与 SQL Server 和 ServiceStack.OrmLite 一起使用

    有人知道如何将正确的 Alias 属性应用于具有架构名称的查询表吗 我有一张桌子叫accounts register 我尝试过使用 Alias accounts register 作为 Register 类的类装饰器属性 但这不起作用 如果
  • 在 TWS API 中请求 nextOrderID 不起作用

    我正在尝试使用 python 通过 TWS API 下订单 我的问题是获取下一个有效的订单 ID 这是我正在使用的 from ibapi client import EClient from ibapi wrapper import EWr
  • 使用MongoDB时需要JPA吗?

    我对这两者很困惑 我正在看戏 java框架 它说它使用JPA 我正在考虑使用 Play 第一次在项目中使用 MongoDB 我以前使用过JPA 但当时我用它来写入关系数据库 mysql MongoDB 不是关系数据库 所以如果我想将它与 P
  • SPMD 与 Parfor

    我对 matlab 中的并行计算很陌生 我有一个创建分类器 SVM 的函数 我想用几个数据集来测试它 我有一个 2 核工作站 所以我想并行运行测试 有人可以向我解释一下以下之间的区别 dataset array dataset1 datas
  • 在 Visual Studio 数据库项目/SQL Server 中创建默认数据

    有没有办法在VS 2010的数据库项目中使用数据生成计划来创建一组默认数据 或者我是否找错了树 即数据生成计划是否最适合创建虚拟示例数据 我们有大量需要为每个数据库部署创建的数据 默认设置 默认用户等 如果有工具来帮助我们解决这个问题就好了
  • 在列表中查找最新版本

    我可以在文件夹中搜索所有版本日志行 但我试图选择列表中的最新版本 但我不知道如何选择 因为列表的元素包含字符和数字 下面是我的代码 用于查找和创建一个名为matched lines的列表 其中包含所有说明日志版本号的行 我希望从创建的列表中
  • 带有附加事件的 EventToCommand

    我在附加事件上使用Validation Error的文本框 验证错误 http msdn microsoft com en us library system windows controls validation error 28v vs
  • 条件绑定

    我是 JavaFx 新手 我正在创建一个应用程序 用户必须填写一些表单 并且我想使用绑定 预先验证 它们 简单的事情 比如所有元素都不能为空 或者其中一些元素只能包含数字 这是我到目前为止所拥有的 saveBtn disableProper