我有一个小面板,其中有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,因为受让方和新都是JCheckBox的实例。但我只需要检查1 JCheckBox
以使表单有效。
如何使用isValid()
方法检查按钮组中是否至少检查了1个?
答案 0 :(得分:0)
如果你可以改变isValid方法的签名,那么你可以添加一个新参数来发送ButtonGroup的List,然后应该从第一个参数List of Component中排除分组的组件。
如果你不喜欢这样做仍然有一种肮脏的方式,如果它是JCheckBox你可以尝试调用
((DefaultButtonModel)checkBox.getModel()).getGroup()
在转换为DefaultButtonModel之前检查“instance of”。