如何使这个 JavaFX 绑定更智能?
How to make this JavaFX binding smarter?
我有 3 个 ToggleButtons 和一个包含 3 个单元格的 GridPane。
案例一:
仅选择了 1 个 ToggleButton,相应的 GridPane 单元格应填满整个窗格。
案例二:
2 个 ToggleButtons 被选中,相应的 2 个 GridPane 单元格预计将平均填充整个窗格。 (当然,选择 3 个 ToggleButton 时也是同样的逻辑。)
目前,我已经通过以下实现实现了我的目标,但我想学习的是让它更智能。对于 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);
}
}
});
可以,请尝试以下绑定方法 PercentWidth
ObservableBooleanValue condition = myToggleButton.selectedProperty();
NumberBinding number = Bindings.when(condition).then(100).otherwise(0);
myGridPane.getColumnConstraints().get(0).percentWidthProperty.bind(number);
我有 3 个 ToggleButtons 和一个包含 3 个单元格的 GridPane。
案例一: 仅选择了 1 个 ToggleButton,相应的 GridPane 单元格应填满整个窗格。
案例二: 2 个 ToggleButtons 被选中,相应的 2 个 GridPane 单元格预计将平均填充整个窗格。 (当然,选择 3 个 ToggleButton 时也是同样的逻辑。)
目前,我已经通过以下实现实现了我的目标,但我想学习的是让它更智能。对于 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);
}
}
});
可以,请尝试以下绑定方法 PercentWidth
ObservableBooleanValue condition = myToggleButton.selectedProperty();
NumberBinding number = Bindings.when(condition).then(100).otherwise(0);
myGridPane.getColumnConstraints().get(0).percentWidthProperty.bind(number);