1

如果不这样做,我该怎么做才能在按钮组上选择哪个单选按钮:

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

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

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

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

5 回答 5

3

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

于 2011-03-10T02:27:32.197 回答
2

Darryl's Select Button Group has a getSelectedButton() method.

于 2011-03-10T04:08:17.853 回答
2

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

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

于 2014-06-11T13:09:42.443 回答
0

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

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

除此之外,不...您将需要进行条件分支。

于 2011-03-10T03:41:57.023 回答
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;
    }
}
于 2016-06-16T04:49:11.847 回答