我有像这样的控制器类
public class Controller{
private final Model model;
@FXML
private CheckBox chbx1;
@FXML
private CheckBox chbx2;
@FXML
private CheckBox chbx3;
public Controller(Model model) {
this.model = model;
}
@FXML
private void initialize(){
chbx1.selectedProperty().bind(model.initProperty());
}
}
我的模型类看起来像这样
public class Model{
private final BooleanProperty init = new SimpleBooleanProperty(false);
public BooleanProperty initProperty() {
return init;
}
public final Boolean getInit() {
return initProperty().get();
}
public final void setInit(Boolean init) {
initProperty().set(init);
}
}
我想将CheckBox绑定到Model中的变量。我目前正在这样做,但我得到CheckBox.selected : A bound value cannot be set.
错误。
我要做的第二件事是检查,选择或分析了哪个复选框,并根据模型中的这个设置布尔变量。有什么方法可以做到这一点吗?
答案 0 :(得分:1)
如果用户点击CheckBox
,控件将尝试修改selected
属性,该属性对于(单向)绑定的属性将失败。
您可以执行双向绑定(如果您修改模型,则更改应导致ui发生更改):
chbx1.selectedProperty().bindBidirectional(model.initProperty());
如果模型只能由控制器修改,你也使用传统的绑定,但绑定需要反过来做:
model.initProperty().bind(chbx1.selectedProperty());