gpt4 book ai didi

java - 将两个 ToggleButtons 绑定(bind)到一个 BooleanProperty

转载 作者:行者123 更新时间:2023-11-30 06:04:54 28 4
gpt4 key购买 nike

我有两个 ToggleButton,我希望它们都绑定(bind)到一个 boolean 属性,这样当一个 ToggleButton 被选中时,另一个 ToggleButton 不会被选中,并且 BooleanProperty 为真,反之亦然。

这是我尝试过的。

FXML 文件:

<VBox xmlns:fx="http://javafx.com/fxml" fx:controller="my.package.MainController" styleClass="Tool" fx:id="root">
<HBox spacing="10">
<fx:define>
<ToggleGroup fx:id="modeToggleGroup"/>
</fx:define>
<ToggleButton fx:id="manualModeBtn" text="Manual Mode" selected="true" toggleGroup="$modeToggleGroup"/>
<ToggleButton fx:id="automaticModeBtn" text="Automatic Mode" toggleGroup="$modeToggleGroup"/>
</HBox>
<!-- other stuff -->
</VBox>

Controller 文件:

public class MainController {

@FXML
private ToggleButton manualModeBtn;
@FXML
private ToggleButton automaticModeBtn;

private BooleanProperty isAutomaticMode;

public void initialize() {
isAutomaticMode = new SimpleBooleanProperty();
automaticModeBtn.selectedProperty.bindBidirectional(isAutomaticMode);
}
}

ToggleGroup 确保不会同时选择两个按钮,但我仍然可以取消选择它们,这是我不希望成为可能的。

如何将另一个 ToggleButton 绑定(bind)到 boolean 属性的对面(即 not())?

最佳答案

您可以通过使用监听器来做到这一点:

public class MainController {

@FXML
private ToggleButton manualModeBtn;
@FXML
private ToggleButton automaticModeBtn;


public void initialize() {
manualModeBtn.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> automaticModeBtn.setSelected(! isNowSelected));
automaticModeBtn.selectedProperty().addListener((obs, wasSelected, isNowSelected) -> manualModeBtn.setSelected(! isNowSelected));

}
}

请注意 RadioButton 几乎已经具有此功能(对于单选按钮,您不能“取消选择”它),因此您可以简单地使用 RadioButton相反。备注this question ,如果这只是它们的外观。

关于java - 将两个 ToggleButtons 绑定(bind)到一个 BooleanProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48215373/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com