在按钮组中选择了哪个单选按钮

时间:2011-03-10 02:21:25

标签: java radio-button buttongroup

如果不执行此操作,我可以做什么来在buttongroup上选择哪个radiobutton:

if (jRadioButton1.isSelected()) {
    //...
}

if (jRadioButton2.isSelected()) {
    //...
}

if (jRadioButton3.isSelected()) {
    //...
}

if (jRadioButton4.isSelected()) {
    //...
}

5 个答案:

答案 0 :(得分:3)

您可以通过ButtonGroup的getSelection()方法获取所选按钮的ButtonModel。我不知道你怎么能避免在选定按钮上有条件地分支,除非你有从ButtonModel到执行动作的某种辅助数据结构映射。如果你有,那么你可以根据返回的ButtonModel激活动作。

答案 1 :(得分:2)

Darryl的Select Button Group有一个getSelectedButton()方法。

答案 2 :(得分:2)

我知道问题很久以前发布了。无论如何,我们可以使用setActioncommand函数。在创建单选按钮时,可以调用setActionCommand来设置动作命令值,该值可用于引用所选的单选按钮。

jRadioButton1.setActionCommand("jRadioButton1"); jRadioButton2.setActionCommand("jRadioButton2") . . String button_name = ((JToggleButton.ToggleButtonModel)button_group.getSelection()).getActionCommand();

答案 3 :(得分:0)

如果您有意,ButtonGroup类不提供识别组中当前所选按钮(继承自AbstractButton)的方法。它只有clearSelection()方法来清除组中所有按钮的选定状态(JButton和JMenuItem没有选择/取消选择按钮状态除外)。

我能想到的一个解决方案是使用特殊的变量或字段(如果它在菜单项中的AbstractButton,JRadioButton或JRadioButtonMenuItem)通过在每个AbstractButton的动作侦听器方法中更新它来识别当前选择的那个(确保)验证用户点击,因为它可以多次触发!)。在其他方法中使用变量(通过对其进行类型转换 - 仅适用于AbstractButton)。

除此之外,没有......你需要做条件分支。

答案 4 :(得分:0)

要处理按钮组bg,可以通过调用按钮组的getElements()方法获取按钮,并使用它作为Collections.list()方法的参数,只需将结果保存在一个arraylist。从那里检索正确的按钮相对简单。

ArrayList<AbstractButton> arl = Collections.list(bg.getElements());
for (AbstractButton ab : arl) {
    JRadioButton jrb = (JRadioButton) ab;
    if (jrb.isSelected()) {
        return jrb;
    }
}