如何使这个JavaFX绑定更智能?

时间:2015-04-17 06:54:05

标签: binding javafx property-binding

我有3个ToggleButtons和一个包含3个单元格的GridPane。

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

案例2: 选择了2个ToggleButtons,相应的2个GridPane单元格将同样填满整个窗格。 (当然选择3个ToggleButtons时也是如此。)

目前,我已经通过以下实施实现了我的目标,但我想要学习的是让它变得更聪明。使用单词smarter,我的意思是实现更短的东西,将ToggleButton状态转换为double值(取消选择=> 0,selected => 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);
            }
        }
    });

1 个答案:

答案 0 :(得分:1)

是的,你可以尝试以下方法来绑定PercentWidth

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