JavaFX bind to multiple properties
17,243
Solution 1
This is possible by binding to a boolean expression via Bindings
:
button.disableProperty().bind(
Bindings.and(
textField.textProperty().isEqualTo(""),
textField2.textProperty().isEqualTo("")));
Solution 2
In addition to Andreys approach, I found that you can also do it like this:
BooleanBinding booleanBinding =
textField.textProperty().isEqualTo("").or(
textField2.textProperty().isEqualTo(""));
button.disableProperty().bind(booleanBinding);
Solution 3
In addition to martin_dk answer, if you want to bind more than two properties you will get code like below, looks weird, but it works.
BooleanBinding booleanBinding
= finalEditor.selectedProperty().or(
staticEditor.selectedProperty().or(
syncEditor.selectedProperty().or(
nativeEditor.selectedProperty().or(
strictEditor.selectedProperty()))));
abstractEditor.disableProperty ().bind(booleanBinding);
Related videos on Youtube
Author by
martin_dk
Updated on September 15, 2022Comments
-
martin_dk over 1 year
I have a simple fxml with a textfield and a button. I'd like to have the button disabled if the textfield is empty. So I insert something like the following in my controller:
@Override public void initialize(URL url, ResourceBundle bundle) { button.disableProperty().bind(textField.textProperty().isEqualTo("")); }
..and that works fine. The problem is when I add a second textfield and would like my button to be disabled if either textfield is empty. What to do then? I tried the following, but that doesn't work:
@Override public void initialize(URL url, ResourceBundle bundle) { button.disableProperty().bind(textField.textProperty().isEqualTo("")); button.disableProperty().bind(textField2.textProperty().isEqualTo("")); }
-
Wesos de Queso over 6 years.textProperty().isEmpty() - seems a better approach to me.
-
Menai Ala Eddine - Aladdin about 6 yearsI guess we use 'or' instead of 'and' ,because 'and' enables button if one of fields are not empty ,but we use 'or' to enable the button only when both of textfields are not empty.