JavaFX 绑定到多个属性

2022-09-02 23:46:21

我有一个简单的fxml,带有文本字段和按钮。如果文本字段为空,我希望禁用该按钮。因此,我在控制器中插入了类似以下内容的内容:

@Override
public void initialize(URL url, ResourceBundle bundle) {
  button.disableProperty().bind(textField.textProperty().isEqualTo(""));
}

..这很好。问题是当我添加第二个文本字段并希望在任一文本字段为空时禁用我的按钮时。那该怎么办呢?我尝试了以下方法,但这不起作用:

@Override
public void initialize(URL url, ResourceBundle bundle) {
  button.disableProperty().bind(textField.textProperty().isEqualTo(""));
  button.disableProperty().bind(textField2.textProperty().isEqualTo(""));
}

答案 1

这可以通过通过以下方式绑定到布尔表达式来实现:Bindings

button.disableProperty().bind(
    Bindings.and(
        textField.textProperty().isEqualTo(""),
        textField2.textProperty().isEqualTo("")));

答案 2

除了安德烈斯的方法,我发现你也可以这样做:

    BooleanBinding booleanBinding = 
      textField.textProperty().isEqualTo("").or(
        textField2.textProperty().isEqualTo(""));

    button.disableProperty().bind(booleanBinding);