JavaFX:RadioButton在第一次点击时不会改变userData

时间:2017-09-28 10:51:38

标签: java javafx radio-button javafx-8

在每个场景中,我有多个toggleGroups,每个都有两个RadioButtons。无论我首先选择哪个场景的RadioButton,听众都不会抓住它。它不是保存设置的用户数据,而是仍然为空。如果我第二次按它,它就可以了。

当我改变场景时,它又一遍又一遍。听众不会听第一个动作。

这是一个已知的错误吗?我像这样保存userData:

@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();
        }
    });
}

1 个答案:

答案 0 :(得分:1)

在FXML文件中,您将回调与<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="@dimen/_16sdp" tools:context="com.example.freddie.ukulimamachinery.LoginActivity"> </RelativeLayout>

连接
testing()

你没有分享FXML,所以这只是猜测,例如你将@FXML private void testing() { ... attach selectedToggleProperty of the ToggleGroup ... } 的{​​{1}}设置为onAction

RadioButton

在这种情况下,如果您点击其中一个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" /> 将仅执行。

只要testing将侦听器附加到RadioButton的{​​{1}}上,侦听器就会仅在选择更改时执行。

更糟糕的是,每次按下单选按钮都会附加一个新的听众,这样你就会有越来越多的听众。

要解决此问题,请将testing的主体移动到控制器的selectedProperty方法,只要加载FXML文件,就将其附加到组一次。然后完全从控制器中删除ToggleGroup