如果不这样做,我该怎么做才能在按钮组上选择哪个单选按钮:
if (jRadioButton1.isSelected()) {
//...
}
if (jRadioButton2.isSelected()) {
//...
}
if (jRadioButton3.isSelected()) {
//...
}
if (jRadioButton4.isSelected()) {
//...
}
如果不这样做,我该怎么做才能在按钮组上选择哪个单选按钮:
if (jRadioButton1.isSelected()) {
//...
}
if (jRadioButton2.isSelected()) {
//...
}
if (jRadioButton3.isSelected()) {
//...
}
if (jRadioButton4.isSelected()) {
//...
}
您可以通过 ButtonGroup 的getSelection () 方法获取所选按钮的 ButtonModel 。我不知道如何避免在选定按钮上进行有条件的分支,例如,除非您有某种从 ButtonModel 到要执行的操作的辅助数据结构映射。如果你有,那么你可以根据返回的 ButtonModel 触发动作。
Darryl's Select Button Group has a getSelectedButton() method.
我知道这个问题很久以前就发布了。无论如何,我们可以使用 setActioncommand 函数。在创建单选按钮时,可以调用 setActionCommand 来设置操作命令值,该值可用于引用被选中的单选按钮。
jRadioButton1.setActionCommand("jRadioButton1");
jRadioButton2.setActionCommand("jRadioButton2")
.
.
String button_name = ((JToggleButton.ToggleButtonModel)button_group.getSelection()).getActionCommand();
ButtonGroup 类不提供一种方法来识别组中当前选定的按钮(继承自 AbstractButton),如果这是您的意图。它只有 clearSelection() 方法可以清除组中所有按钮的选中状态(JButton 和 JMenuItem 除外,它们没有选择/取消选择按钮状态)。
我能想到的一种解决方案是使用一个特殊的变量或字段(AbstractButton、JRadioButton 或 JRadioButtonMenuItem,如果它在菜单项中)通过在每个 AbstractButton 的动作侦听器方法中更新它来识别当前选择了哪个(确保验证用户点击,因为它可以被多次触发!)。在其他方法中使用变量(通过类型转换 - 仅适用于 AbstractButton)。
除此之外,不...您将需要进行条件分支。
对于按钮组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;
}
}