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

时间:2017-11-02 04:10:38

标签: java javafx radio-button

我有一个程序,用户必须在其中注册并在注册场景中使用RadioButton选择性别: Screenshot of the program running

我有一个变量"性别"这是一个炭;我希望程序将此字符更改为“' m'或者' f'取决于RadioButton用户按下的内容(' 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';
                }
            });

感谢您的时间和精力!

2 个答案:

答案 0 :(得分:0)

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

例如,

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

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

答案 1 :(得分:0)

您的单选按钮应放在ToggleGroup

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

然后,您可以收听所选切换的更改并对其进行操作。这可以通过为组中的每个切换添加一个监听器来完成:

male.selectedProperty.addListener((observable, wasSelected, isSelected) -> {
    if (isSelected) {
        gender = 'm';
    }
};
// similarly for female...

或者通过收听对该组的selectedToggleProperty的更改:

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 = '?';
       }
    }
);