我在JavaFX中有一个带有一堆字段的表单,其中一些是可选的(默认情况下是禁用的)。为了反映这一点,我在每个字段旁边都有一个CheckBox,它链接到相应字段的disabledProperty
。但是,由于该属性与禁用字段有关,因此我必须将该属性与选择状态的否定相关联:
BooleanProperty property = new SimpleBooleanProperty(false);
contentField.disableProperty().bind(property.not());
property.bind(chkBox.selectedProperty());
因此,property
是绑定到相关属性的BooleanProperty
。
问题是我的模型需要以编程方式进行选择,以支持诸如清除选择之类的功能(即将所有复选框设置为false并相反地禁用所有内容字段)。由于绑定仅在一个方向上完成,我无法执行property.set(false)
,因为它返回java.lang.RuntimeException: A bound value cannot be set.
我的问题是:我可以拥有更好的绑定模型吗?对我来说重要的是逻辑由模型(即property
)控制,而不是在视图中设置观察者(例如,观察复选框的状态并更改控件的状态),因为我觉得这可能非常容易出错,并且有点违背了JavaFX的MVC方法。