如果不执行此操作,我可以做什么来在buttongroup上选择哪个radiobutton:
if (jRadioButton1.isSelected()) {
//...
}
if (jRadioButton2.isSelected()) {
//...
}
if (jRadioButton3.isSelected()) {
//...
}
if (jRadioButton4.isSelected()) {
//...
}
答案 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;
}
}