java - 在 JavaFX 中启用/禁用按钮

标签 java 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);
}

有没有更简单的方法来做到这一点?另外,如果我在这些区域添加文本,按钮是否应该重新启用它自己?

最佳答案

使用文本字段的 textProperty() 创建一个 BooleanBinding,然后将其与 Button 的 disableProperty() 绑定(bind)。

用于在任何文本字段不为空时启用按钮。

// 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());

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

只需将替换为

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

关于java - 在 JavaFX 中启用/禁用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29641020/

相关文章:

javafx - Smack 名单条目为空

Pane 中的 JavaFX Canvas 大小

java - 为什么我的对象没有在 JavaFX 中显示?

c# - Java/.NET 中的 RSA 加密和 .NET 中的解密

java - JavaFX 中是否有某些特性或功能将受益于后续 Java 版本的语言/VM 改进?

java - 右键单击 javaFX 中的 Pane 或 ImageView 时如何显示上下文菜单

java - 在 Java 中从 URL 中读取 XML 字符串

java - 如何将人脸存储在内存中

java - 如何知道哪个 X509 证书签署了另一个证书(Java)

java - 谁调用了java中的main函数?