How to get selected radio button from ToggleGroup

后端 未结 5 876
一生所求
一生所求 2020-12-09 16:24

I an working on JavaFX 8 and SceneBuilder. I created some radio buttons in the FXML File and specified a toggleGroup name to a radio button list in

5条回答
  •  悲哀的现实
    2020-12-09 16:49

    This was never properly or thoroughly answered, so I thought I would post the solution I got.

    When you create radio buttons in SceneBuilder, then ALSO use SceneBuilder to assign them to a group. The way you access that group via the Controller is to first create a variable of type ToggleGroup in the Controller and name it the exact same name as the one you created in SceneBuilder. Then you can use it. Here is a pseudocode example of how I did it:

    // your imports
    public class Controller
    {
        @FXML ToggleGroup   myGroup; //I called it myGroup in SceneBuilder as well.
    
        public void myGroupAction(ActionEvent action)
        {
          System.out.println("Toggled: " + myGroup.getSelectedToggle().getUserData().toString());
        }
    
        public void initialize()
        {
          //whatever initialize code you have here
        }
    }
    

    Although the text returned from the getUserData property is lengthy. Here is a way to get just the name of the Radio Button:

    myGroup.selectedToggleProperty().addListener(new ChangeListener()
        {
        @Override
        public void changed(ObservableValue ov, Toggle t, Toggle t1)
            {
            RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
            System.out.println("Selected Radio Button - "+chk.getText());
            }
        });
    

    Hope this helps someone down the road ...

提交回复
热议问题