微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 JavaFX 中,当 TextField 的值未设置为零时是否可以启用 CheckBox

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

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

在我的 MainController 课上:

@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 Method" 设置为 On ActionOn Key Typed,但它仍然没有提供正确的条件和输出

解决方法

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

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

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

,

我建议为 TextFieldChangeListener 写一个 text property

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 而不是使用等号运算符,即 ==

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。