【问题标题】:How to make variable change upon pressing on the RadioButton in JavaFX?如何在按下 JavaFX 中的 RadioButton 时进行变量更改?
【发布时间】:2018-04-14 12:22:36
【问题描述】:

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

我有一个变量“gender”,它是一个字符;我希望程序将此字符更改为“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';
                }
            });

感谢您的时间和精力!

【问题讨论】:

  • 什么不起作用?它在哪里不起作用?有错误吗?
  • @Steven 性别返回为 null,无论是否按下 RadioButton。

标签: java javafx radio-button


【解决方案1】:

您的单选按钮应放在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 = '?';
       }
    }
);

【讨论】:

    【解决方案2】:

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

    例如,

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

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

    【讨论】:

    • 非常感谢!你是个传奇!
    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2021-02-12
    • 1970-01-01
    • 2020-07-30
    • 2013-04-02
    • 2010-10-04
    相关资源
    最近更新 更多