Binding 如何使JavaFX绑定更智能?

Binding 如何使JavaFX绑定更智能?,binding,javafx,property-binding,Binding,Javafx,Property Binding,我有3个切换按钮和一个包含3个单元格的网格窗格 案例1: 仅选择1个ToggleButton,相应的GridPane单元格将填充整个窗格 案例2: 如果选择了其中两个切换按钮,则相应的两个GridPane单元格将均匀地填充整个窗格。(当然,选择3个切换按钮时的逻辑相同。) 目前,我已经通过以下实现实现了我的目标,但我想学习的是使其更智能。对于单词smarter,我的意思是实现一些更短的东西,将ToggleButton状态转换为双值(取消选择=>0,选择=>100)。我不想通过重复if子句来实现这

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

案例1: 仅选择1个ToggleButton,相应的GridPane单元格将填充整个窗格

案例2: 如果选择了其中两个切换按钮,则相应的两个GridPane单元格将均匀地填充整个窗格。(当然,选择3个切换按钮时的逻辑相同。)

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

一个ToggleButton的当前实现如下:

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);
            }
        }
    });
myToggleButton.selectedProperty().addListener(新的ChangeListener()){
@凌驾

public void已更改(observeValue是的,您可以尝试以下绑定
PercentWidth

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