在 JavaFX 中,当 TextField 的值未设置为零时是否可以启用复选框

In JavaFX, Is it possible to enable a CheckBox when the TextField's value is not set to Zero

当我在 TextField 中输入非零值时,如何启用我的 CheckBox

默认情况下,我已将 CheckBox 设置为在 Scene Builder 中禁用。

在我的 MainController class:

@FXML
private CheckBox cb1;

@FXML
private TextField txt1;

public void enableCB() {
    if (txt1.getText() == "0") {
        cb1.setDisable(true);
    } else {
        cb1.setDisable(false);
    }
}

在 Scene Builder 中,我已将 “enableCb 方法” 设置为 On ActionOn Key Typed ,但仍然没有提供正确的条件和输出。

我建议写一个ChangeListener for the text propertyTextField

txt1.textProperty().addListener(new ChangeListener<String>() {

    @Override
    public void changed(ObservableValue<? extends String> observable,
                        String oldValue,
                        String newValue) {
        if ("0".equals(newValue)) {
            cb1.setDisable(true);
        }
        else {
            cb1.setDisable(false);
        }
    }
});

每当TextField中的文本发生变化时,无论文本如何变化,上面的代码都会执行。

另请注意,在 Java 中比较不同字符串的方法是使用方法 equals 而不是使用等号运算符,即 ==.

这可以通过相当简单的单语句绑定来完成:

cb1.disableProperty().bind(
                txt1.textProperty().isEmpty()
                         .or(txt1.textProperty().isEqualTo("0")));

仅当 TextField 中输入的值不是“0”时,才会启用 CheckBox。因此,如果文本为空或“0”,它将被禁用。