JavaFX:检查文本属性是否为空(而不仅仅是空)

 2023-02-15    329  

问题描述

我想根据文本字段是否包含任何内容,以启用或禁用一个按钮,并且我想通过使用属性绑定来实现此功能.

因此,首先,我在文本字段的文本属性上使用了ISEMPTY()方法来为按钮的禁用属性创建布尔值绑定:

JavaFX:检查文本属性是否为空(而不仅仅是空)

startSearchButton.disableProperty().bind(searchField.textProperty().isEmpty());

虽然绑定有效,但我对”文本字段包含任何内容”的定义与Isempty()方法所做的不同,即仅检查文本的长度是否为0.但是,我对是否存在”感兴趣.真实的”文本,即文本字段是否为 blank (不仅不是空,而且实际上不仅是空格).

不幸的是,没有方法isblank(),我也找不到绑定实用程序中的任何合适的东西.现在,我看到您可以通过bindings.createbooleanproperty方法实现您喜欢的任何自定义布尔属性,但是我尚不熟悉定义自定义绑定的概念.我将如何为我的案件实施这样的布尔属性?

推荐答案

您可以使用(在许多方法中)创建自定义绑定#createBooleanBinding-java.util.concurrent.callable-javafx.beans.beans.observable …-” rel =” noreferrer”> Bindings.createBooleanBinding(…) .第一个参数是一个计算绑定值的函数(您可以使用trim()从文本中修剪空格,然后检查结果是否为空);其余的参数是触发绑定重新计算的可观察到的列表.您想在文本字段中的文本更改时重新计算绑定,因此只需指定文本属性:

startSearchButton.disableProperty().bind(Bindings.createBooleanBinding(() -> 
    searchField.getText().trim().isEmpty(),
    searchField.textProperty());

其他推荐答案

至于2022

public static BooleanBinding isBlank(StringProperty stringProperty) {
        return Bindings.createBooleanBinding(() -> stringProperty.get().isBlank(), stringProperty);
    }

    public static BooleanBinding isNotBlank(StringProperty stringProperty) {
        return isBlank(stringProperty).not();
    }

(idk为什么没有人建议String::isBlank,也许以后添加在Java中)

其他推荐答案

您也可以这样做:

  1. with apache stringutils.isblank()

    startSearchButton.disableProperty().bind(Bindings.createBooleanBinding(() -> 
        StringUtils.isBlank(searchField.getText()),
        searchField.textProperty());
  2. 创建自己的方法

    public static boolean IsNullOrWhitespace(String s) {
            if(s == null) {
                return true;
            }
    
            for(int i = 0; i < s.length(); ++i) {
                if(!Character.isWhitespace(s.charAt(i))) {
                    return false;
                }
    
            }
            return true;
        }

,然后:

startSearchButton.disableProperty().bind(Bindings.createBooleanBinding(() -> 
            IsNullOrWhitespace(searchField.getText()),
            searchField.textProperty());

以上所述是小编给大家介绍的JavaFX:检查文本属性是否为空(而不仅仅是空),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/33778.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。