如何解决在 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 Action 和 On Key Typed,但它仍然没有提供正确的条件和输出。
解决方法
这可以通过一个相当简单的单语句绑定来完成:
cb1.disableProperty().bind(
txt1.textProperty().isEmpty()
.or(txt1.textProperty().isEqualTo("0")));
仅当在 CheckBox
中输入了非“0”的值时,才会启用 TextField
。因此,如果文本为空或“0”,它将被禁用。
我建议为 TextField
的 ChangeListener 写一个 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 举报,一经查实,本站将立刻删除。