代码之家  ›  专栏  ›  技术社区  ›  M. Barabas

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

  •  0
  • M. Barabas  · 技术社区  · 7 年前

    我有这样的控制器类

    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.selected : A bound value cannot be set. 错误

    我想做的第二件事是检查,根据模型中设置的布尔变量,选中或取消选中哪个复选框。有没有办法做到这一点?

    1 回复  |  直到 7 年前
        1
  •  2
  •   fabian    7 年前

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

    您可以进行双向绑定(如果您修改模型,则更改应导致ui中的更改):

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

    如果模型只能由控制器修改,则也可以使用常规绑定,但绑定需要以另一种方式进行:

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