2016-09-01 1 views
0

私は3 JComboBoxと2 JCheckBoxを持っています。JButtonGroupに属しています。私は、パネルフォームが有効であるかどうか、またすべての必須フィールドにnull選択がないかどうかを確認しようとしているので、メソッドを作成しました。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を選択しておく必要があり、です。 ボタングループにが少なくとも1JChecBoxがチェックされているかどうかを確認する必要があります。両方譲渡先はJCheckBoxののインスタンスであるため、

次のブロックではfalseを返します。しかし、私は1 JCheckBoxをチェックしてフォームを有効にする必要があります。

isValid()メソッドを使用してボタングループから少なくとも1がチェックされているかどうかを確認するにはどうすればよいですか?

+0

参照:http://stackoverflow.com/questions/201287/how-do-i-get-which-jradiobutton-is-selected-from-a-buttongroup – c0der

答えて

0

isValidメソッドのシグネチャを変更できる場合は、新しいパラメータを追加してButtonGroupのListを送信し、グループ化されたコンポーネントを最初のパラメータList of Componentから除外する必要があります。

あなたはそれがJCheckBoxのであれば、あなたが

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

チェックキャストの前にDefaultButtonModelに「のインスタンスを」呼び出すしようとすることができ、まだ汚い方法があることをやりたいいけない場合。

関連する問題