仅当在JavaFX中禁用字段时如何绑定text属性

时间:2017-05-22 14:53:04

标签: java javafx binding

我有一个包含2个字段(field1,field2)的表单和一个复选框。

如果选中该复选框,我需要第二个字段中的文本可编辑,否则,字段2中的文本应与字段1中的文本相同。 如何使用绑定在初始化方法中定义它们来管理它?

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

确保文本字段最初也是绑定的。