【问题标题】:How to check if JCheckBox belongs to a button group?如何检查 JCheckBox 是否属于按钮组?
【发布时间】:2017-01-08 19:01:32
【问题描述】:

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

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,因为 TransfereeNew 都是 JCheckBox 的实例。但我只需要检查 1 个JCheckBox 即可使表格有效。

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

【问题讨论】:

标签: java swing jcheckbox buttongroup


【解决方案1】:

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

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

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

在转换为 DefaultButtonModel 之前检查“实例”。

【讨论】:

    猜你喜欢
    • 2011-04-05
    • 1970-01-01
    • 2012-08-15
    • 2020-01-02
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多