2011-03-10 199 views
1

我能做些什么工作再上一个ButtonGroup中选择哪个单选按钮没有这样做:哪个单选按钮一个按钮组中选择

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

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

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

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

回答

3

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

+0

如何转换正在返回的按钮模型。进入像jRadioButton1或jRadioButton2? – user225269 2011-03-10 03:16:40

+0

您无法将其转换;该模型用于为JRadioButton供电。这是一个模型视图控制器分离。你想完成什么,我可以告诉你如何去做。 – I82Much 2011-03-10 03:43:32

+1

尝试:获取当前选定的单选按钮。或者通过某种方式让你知道哪一个是它,并根据它执行不同的代码行。 – Yokhen 2013-04-04 00:09:28

0

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

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

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

2

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

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

0

对于处理按钮组BG,您可以通过调用按钮组的getElements()方法,并使用作为Collections.list()方法的参数,只需要保存获取的按钮导致一个数组列表。从那里检索正确的按钮相对简单。

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

给它添加一些描述 – piyushj 2016-06-16 04:59:39

相关问题