我有一个包含2个字段(field1,field2)的表单和一个复选框。
如果选中该复选框,我需要第二个字段中的文本可编辑,否则,字段2中的文本应与字段1中的文本相同。 如何使用绑定在初始化方法中定义它们来管理它?
答案 0 :(得分:4)
您不能仅使用绑定来执行此操作,因为如果取消选中该复选框,则需要取消绑定第二个文本字段中的文本。 (否则,当用户在文本字段中键入时,您将获得异常。)
您可以这样做:
field2.editableProperty().bind(checkBox.selectedProperty());
checkBox.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> {
if (isNowSelected) {
field2.textProperty().unbind();
} else {
field2.textProperty().bind(field1.textProperty());
}
});
如果最初取消选中该复选框,则需要额外调用
field2.textProperty().bind(field1.textProperty());
确保文本字段最初也是绑定的。