在JavaFX中,如何在按下RadioButton时进行变量更改?

在JavaFX中,如何在按下RadioButton时进行变量更改?,java,javafx,radio-button,Java,Javafx,Radio Button,我有一个程序,用户必须在其中注册,在注册场景中,他用单选按钮选择性别: 我有一个可变的性别,这是一个字符;我希望程序根据用户按下的单选按钮,将这个字符改为“m”或“f”,男性按“m”,女性按“f”。 这是我目前所拥有的,但它不起作用: @FXML private RadioButton male; @FXML private RadioButton female; priva

我有一个程序,用户必须在其中注册,在注册场景中,他用单选按钮选择性别:

我有一个可变的性别,这是一个字符;我希望程序根据用户按下的单选按钮,将这个字符改为“m”或“f”,男性按“m”,女性按“f”。 这是我目前所拥有的,但它不起作用:

            @FXML
            private RadioButton male;
            @FXML
            private RadioButton female;
            private char gender;


            male.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    gender = 'm';
                }
            });
            female.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    gender = 'f';
                }
            });
谢谢你的时间和努力

您可以尝试使用与RadioButton类关联的isSelected方法

比如说,

if(male.isSelected()){
   gender = 'm';
}

同样,在正确初始化后,您可以将其用于其他单选按钮。

您的单选按钮应放置在

如果没有切换组,单选按钮选择将不会相互排斥,因此性别可能同时为男性和女性

然后,您可以侦听所选切换的更改并对其进行操作。这可以通过向组中的每个切换添加侦听器来实现:

male.selectedProperty.addListener((observable, wasSelected, isSelected) -> {
    if (isSelected) {
        gender = 'm';
    }
};
// similarly for female...
ToggleGroup genderGroup = new ToggleGroup();
male.setToggleGroup(genderGroup);
female.setToggleGroup(genderGroup);
genderGroup.selectedToggleProperty().addListener(
   (observable, oldToggle, newToggle) -> {
       if (newToggle == male) {
           gender = 'm';
       } else if (newToggle == female) {
           gender = 'f';
       } else {
           gender = '?';
       }
    }
);
或通过侦听对组的SelectedToggle属性的更改:

male.selectedProperty.addListener((observable, wasSelected, isSelected) -> {
    if (isSelected) {
        gender = 'm';
    }
};
// similarly for female...
ToggleGroup genderGroup = new ToggleGroup();
male.setToggleGroup(genderGroup);
female.setToggleGroup(genderGroup);
genderGroup.selectedToggleProperty().addListener(
   (observable, oldToggle, newToggle) -> {
       if (newToggle == male) {
           gender = 'm';
       } else if (newToggle == female) {
           gender = 'f';
       } else {
           gender = '?';
       }
    }
);

什么不起作用?哪里不起作用?有错误吗?@Steven gender返回空值,无论是否按下单选按钮。非常感谢!你是一个传奇!