2016-09-01 3 views
0

У меня есть небольшая панель, которая имеет 3 JComboBox и 2 JCheckBox, которая относится к JButtonGroup. Я пытаюсь проверить правильность формы панели и что все обязательные поля не имеют нулевого выбора, поэтому я создал метод.Как проверить, принадлежит ли JCheckBox группе кнопок?

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 для студенческого типа. Мне нужно проверить, есть ли в группе Button не менее 1JChecBox проверено.

Следующий блок будет возвращать ложь, так как Правопреемник и New являются экземплярами JCheckBox. Но мне нужно только 1 JCheckBox, чтобы сделать форму действительной.

Как проверить, проверено ли хотя бы 1 из группы кнопок, используя мой метод isValid()?

+0

см. Http://stackoverflow.com/questions/201287/how-do-i-get-which-jradiobutton-is-selected-from-a-buttongroup – c0der

ответ

0

Если вы можете изменить подпись метода isValid, то вы можете добавить новый параметр для отправки List of ButtonGroup, тогда сгруппированные компоненты должны быть исключены из первого параметра List of Component.

, если вы не хотите сделать, что еще есть грязный способ, если это JCheckBox вы можете попробовать позвонить

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

проверить «экземпляр» перед броском в DefaultButtonModel.

Смежные вопросы