gpt4 book ai didi

JavaFX:RadioButton 在第一次单击时不会更改用户数据

转载 作者:行者123 更新时间:2023-12-02 12:12:07 30 4
gpt4 key购买 nike

在每个场景中,我都有多个切换组,每个切换组有两个单选按钮。无论我首先选择哪个场景上的哪个 RadioButton,听众都不会明白。它仍然为空,而不是保存设置的用户数据。如果我按第二次,它就会起作用。

当我改变场景时,一切又变得一样了。听者不会听到第一个 Action 。

这是一个已知的错误吗?我这样保存用户数据:

@FXML private RadioButton rbCheck11; @FXML private RadioButton rbCheck12;
@FXML private ToggleGroup group1;
public static String[] values = new String[326];

@FXML
private void testing() {
rbCheck11.setUserData(1); rbCheck12.setUserData(0);
group1.selectedToggleProperty().addListener((observable, oldValue, newValue) -> {
if (group1.getSelectedToggle() != null){
values[0] = group1.getSelectedToggle().getUserData().toString();
}
});
}

最佳答案

在 FXML 文件中,使用 testing() 连接回调:

@FXML
private void testing() { ... attach selectedToggleProperty of the ToggleGroup ... }

您没有共享 FXML,因此这只是一个猜测,例如您将 RadioButtononAction 设置为 testing:

<RadioButton fx:id="rbCheck11" layoutX="121.0" layoutY="115.0" mnemonicParsing="false" 
onAction="#testing" text="RadioButton">
<toggleGroup>
<ToggleGroup fx:id="group1" />
</toggleGroup>
</RadioButton>
<RadioButton fx:id="rbCheck12" layoutX="127.0" layoutY="166.0" mnemonicParsing="false"
onAction="#testing" text="RadioButton" toggleGroup="$group1" />

在这种情况下,仅当您单击其中一个 RadioButton 时,才会执行测试

只要 testing 将监听器附加到 ToggleGroupselectedProperty 上,监听器将仅在选择更改时执行。

更糟糕的是,每次按单选按钮都会附加一个新的监听器,因此组中将会有越来越多的监听器。

要解决此问题,请将 testing 的主体移至 Controller 的 initialize 方法,以便在 FXML 文件加载后将其仅附加到组一次。已加载。然后从 Controller 中完全删除testing

关于JavaFX:RadioButton 在第一次单击时不会更改用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467333/

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