我希望根据文本字段是否包含任何内容来启用或禁用按钮,并且我希望使用属性绑定来实现这一点。
因此,我首先在文本字段的text属性上使用isEmpty()方法为按钮的disabled属性创建了一个布尔绑定:
startSearchButton.disableProperty().bind(searchField.textProperty().isEmpty());
虽然绑定可以正常工作,但我对“文本字段包含任何内容”的定义与isEmpty()方法的定义不同,即只检查文本的长度是否大于0。然而,我感兴趣的是是否存在“真正的”文本,即文本字段是否为空(不仅不是空的,而且实际上不仅仅是空白)。
不幸的是,没有isBlank()方法,而且我在绑定实用类中也找不到任何合适的东西。现在,我看到您可以通过Bindings.createBooleanProperty方法实现任何自定义布尔属性,但是我还不熟悉定义自定义绑定的概念。对于我的情况,我应该如何实现这样的布尔属性呢?
发布于 2016-03-12 03:27:24
您可以使用(在许多方法中) Bindings.createBooleanBinding(...)
创建自定义绑定。第一个参数是计算绑定的值的函数(您可以使用trim()
修剪文本中的空格,然后检查结果是否为空);其余的参数是触发绑定重新计算的可观察参数列表。当文本字段中的文本发生更改时,您希望重新计算绑定,因此只需指定text属性:
startSearchButton.disableProperty().bind(Bindings.createBooleanBinding(() ->
searchField.getText().trim().isEmpty(),
searchField.textProperty());
https://stackoverflow.com/questions/35948307
复制相似问题