首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从ToggleGroup中获得选定的单选按钮

如何从ToggleGroup中获得选定的单选按钮
EN

Stack Overflow用户
提问于 2015-09-06 15:02:00
回答 5查看 83.5K关注 0票数 30

我在JavaFX 8和SceneBuilder上工作.我在FXML中创建了一些单选按钮,并在其中将toggleGroup名称指定为单选按钮列表。因此,现在我想在我的控制器中获得toggleGroup的选定单选按钮,是否需要将所有的单选按钮再次作为控制器中的字段,还是toggleGroup对象将为我获取所选的单选按钮(仅为该单选按钮的文本,而不是按钮对象)。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-03-26 10:42:08

代码语言:javascript
运行
复制
 @FXML
 ToggleGroup right; //I called it right in SceneBuilder.

稍后在方法的某个地方。

代码语言:javascript
运行
复制
RadioButton selectedRadioButton = (RadioButton) right.getSelectedToggle();
String toogleGroupValue = selectedRadioButton.getText();
票数 50
EN

Stack Overflow用户

发布于 2015-09-06 17:21:26

假设您有一个切换组和三个属于该组的单选按钮。

代码语言:javascript
运行
复制
ToggleGroup group = new ToggleGroup();

RadioButton rb1 = new RadioButton("RadioButton1");
rb1.setUserData("RadioButton1");
rb1.setToggleGroup(group);
rb1.setSelected(true);

RadioButton rb2 = new RadioButton("RadioButton2");
rb2.setUserData("RadioButton2");
rb2.setToggleGroup(group);

RadioButton rb3 = new RadioButton("RadioButton3");
rb3.setUserData("RadioButton3");
rb3.setToggleGroup(group);

当您从该切换组中选择单选按钮时,将调用以下changed(...)方法。

代码语言:javascript
运行
复制
group.selectedToggleProperty().addListener(new ChangeListener<Toggle>(){
    public void changed(ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) {

         if (group.getSelectedToggle() != null) {

             System.out.println(group.getSelectedToggle().getUserData().toString());
             // Do something here with the userData of newly selected radioButton

         }

     } 
});
票数 19
EN

Stack Overflow用户

发布于 2016-07-14 01:24:15

这从来没有正确或彻底的回答,所以我想我会张贴我得到的解决方案。

SceneBuilder中创建单选按钮时,还可以使用SceneBuilder将它们分配给组。通过Controller访问该组的方法是首先在Controller中创建一个类型为ToggleGroup的变量,并将其命名为与您在SceneBuilder中创建的变量完全相同的名称。那你就可以用它了。下面是一个伪代码示例,说明了我是如何做到的:

代码语言:javascript
运行
复制
// 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
    }
}

虽然从getUserData属性返回的文本很长。这里有一种方法可以只获取的名称:

代码语言:javascript
运行
复制
myGroup.selectedToggleProperty().addListener(new ChangeListener<Toggle>()
    {
    @Override
    public void changed(ObservableValue<? extends Toggle> ov, Toggle t, Toggle t1)
        {
        RadioButton chk = (RadioButton)t1.getToggleGroup().getSelectedToggle(); // Cast object to radio button
        System.out.println("Selected Radio Button - "+chk.getText());
        }
    });

希望这能帮到路上的人。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32424915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档