【问题标题】:How to make this JavaFX binding smarter?如何使这个 JavaFX 绑定更智能?
【发布时间】:2015-04-17 06:54:04
【问题描述】:

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

案例 1: 仅选择了 1 个 ToggleButton,对应的 GridPane 单元格应填满整个窗格。

案例 2: 选择了 2 个 ToggleButtons,相应的 2 个 GridPane 单元格预计将均匀地填充整个窗格。 (当然,选择 3 个 ToggleButtons 时的逻辑相同。)

目前,我已经通过以下实现实现了我的目标,但我想学习的是让它更智能。使用 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);
            }
        }
    });

【问题讨论】:

    标签: binding javafx property-binding


    【解决方案1】:

    可以,试试下面的绑定PercentWidth

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

    【讨论】:

      猜你喜欢
      • 2015-11-11
      • 2016-12-18
      • 1970-01-01
      • 2013-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 2018-05-09
      • 1970-01-01
      相关资源
      最近更新 更多