如何检查JCheckBox是否属于按钮组?

时间:2016-09-01 03:33:23

标签: java swing jcheckbox buttongroup

我有一个小面板,其中有3 JComboBox和2 JCheckBox 属于JButtonGroup 。我试图检查面板表单是否有效,并且所有必填字段都没有空选择,所以我创建了一个方法。

enter image description here

public static boolean isValid(List<Component> aComponent){
        boolean isValid = false ;
        for(Component c: aComponent){
            if(c instanceof JComboBox){
                isValid = (((JComboBox) c).getSelectedIndex() > -1);
                JOptionPane.showMessageDialog(null,"ComboBox returned: "+isValid);
            }else if(c instanceof JCheckBox){
                isValid = ( ((JCheckBox) c).isSelected() );
                JOptionPane.showMessageDialog(null,"Checkbox returned: "+isValid);
            }else if(c instanceof JTextField){
                isValid = ((JTextField) c).getText().isEmpty();
                JOptionPane.showMessageDialog(null,"TextField returned: "+isValid);
            }
        }
        return isValid;
    }

问题是,我只需要为学生类型选择一个JCheckbox。 我需要能够检查按钮组是否已选中至少1 JChecBox

以下块将返回false,因为受让方都是JCheckBox的实例。但我只需要检查1 JCheckBox以使表单有效。

如何使用isValid()方法检查按钮组中是否至少检查了1个?

1 个答案:

答案 0 :(得分:0)

如果你可以改变isValid方法的签名,那么你可以添加一个新参数来发送ButtonGroup的List,然后应该从第一个参数List of Component中排除分组的组件。

如果你不喜欢这样做仍然有一种肮脏的方式,如果它是JCheckBox你可以尝试调用

((DefaultButtonModel)checkBox.getModel()).getGroup()

在转换为DefaultButtonModel之前检查“instance of”。