【问题标题】:How to bind text property only if field is disabled in JavaFX仅当在 JavaFX 中禁用字段时如何绑定文本属性
【发布时间】:2017-05-22 14:53:04
【问题描述】:

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

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

【问题讨论】:

    标签: java javafx binding


    【解决方案1】:

    您不能仅使用绑定来执行此操作,因为如果取消选中该复选框,您需要取消绑定第二个文本字段中的文本。 (否则,当用户在文本字段中键入时,您将得到异常。)

    你可以这样做:

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

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

    【讨论】:

    • 太棒了!彻底解决了我的问题!感谢您的快速回复!
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2015-11-04
    相关资源
    最近更新 更多