在JavaFX中启用/禁用按钮

如何在特定条件下禁用按钮? 例如,我有许多文本字段和按钮,当这些文本字段为空时,应禁用其中一个按钮。 我已经有了这个代码。

if(txtID.getText().isEmpty()&&txtG.getText().isEmpty() &&txtBP.getText().isEmpty()&&txtD.getText().isEmpty() &&txtSP.getText().isEmpty()&&txtCons.getText().isEmpty()){ btnAdd.setDisable(true); } else{ btnAdd.setDisable(false); } 

有更简单的方法吗? 此外,如果我在这些区域添加文本,按钮是否应该重新启用它自己?

使用textfield的textProperty()创建一个BooleanBinding ,然后将其与Button的disableProperty()绑定。

如果任何文本字段不为空,则启用按钮。

 // I have added 2 textFields, you can add more... BooleanBinding booleanBind = Bindings.and(text1.textProperty().isEmpty(), text2.textProperty().isEmpty()); button.disableProperty().bind(booleanBind); 

超过2个文本字段

 BooleanBinding booleanBind = Bindings.and(text1.textProperty().isEmpty(), text2.textProperty().isEmpty()).and(text3.textProperty().isEmpty()); 

或者,更好的方法是直接使用属性:

 BooleanBinding booleanBind = text1.textProperty().isEmpty() .and(text2.textProperty().isEmpty()) .and(text3.textProperty().isEmpty()); 

仅在所有文本字段都有文本时启用按钮。

只需替换and使用or

 BooleanBinding booleanBind = text1.textProperty().isEmpty() .or(text2.textProperty().isEmpty()) .or(text3.textProperty().isEmpty()); 

在swing中我们可以禁用一个按钮,如下所示: JButton start = new JButton("Start"); start.setEnabled(false); JButton start = new JButton("Start"); start.setEnabled(false);

但是在javaFX中这个函数(setEnabled)改为setDisabled,所以我们可以在javaFX中使用这个代码: start.setDisable(false);