如何将复选框绑定到 JavaFX 中的变量?

How to bind checkbox to variable in JavaFX?

我有这样的控制器class

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

我的模型class是这样的

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 绑定到模型中的变量。我目前正在这样做,但出现 CheckBox.selected : A bound value cannot be set. 错误。

我想做的第二件事是根据模型中设置的布尔变量检查选中或取消选中了哪个复选框。有什么方法可以做到这一点吗?

如果用户单击 CheckBox,控件将尝试修改 selected属性,这将因 属性(单向)而失败) 绑定。

您可以进行双向绑定(如果您修改模型,那么更改应该会导致 ui 发生变化):

chbx1.selectedProperty().bindBidirectional(model.initProperty());

如果模型只能被controller修改,你也可以使用常规绑定,但是绑定需要反过来:

model.initProperty().bind(chbx1.selectedProperty());