如何使此 JavaFX 绑定更智能



我有 3 个切换按钮和一个包含 3 个单元格的网格窗格。

案例1:仅选择 1 个切换按钮,相应的网格窗格单元格应填充整个窗格。

案例2:选择了 2 个切换按钮,相应的 2 个网格窗格单元格应均匀地填充整个窗格。(当然,当选择了 3 个切换按钮时,逻辑相同。

目前,我已经通过以下实现实现了我的目标,但我想学习的是使其更智能。对于单词 smarter ,我的意思是实现一些更短的东西,将 ToggleButton 状态转换为双精度值(取消选择 => 0 ,选择=> 100)。我不想通过重复 if 子句来实现这些,但我正在尝试实现可以在 .bind() 方法调用之前附加的东西。

一个切换按钮的当前实现如下:

myToggleButton.selectedProperty().addListener(new ChangeListener<Boolean>() {
        @Override
        public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
            if(newValue){
                myGridPane.getColumnConstraints().get(0).setPercentWidth(100);
            }else{
                myGridPane.getColumnConstraints().get(0).setPercentWidth(0);
            }
        }
    });

是的,您可以尝试以下操作进行绑定PercentWidth

ObservableBooleanValue condition = myToggleButton.selectedProperty();
NumberBinding number = Bindings.when(condition).then(100).otherwise(0);
myGridPane.getColumnConstraints().get(0).percentWidthProperty.bind(number);

最新更新