2012-01-31 8 views
1

私はJForm(サブコンポーネント)内のいくつかのチェックボックスを持っていると私は1つのが確認されているかを確認すること、このコードを使用しています:JFrame内でどのチェックボックスがチェックされているか確認する方法は?

countItems = 0; 
    for(Component jb: this.getComponents()) 
    { 
     if((jb instanceof JCheckBox)) //I never get pass this point(its always false) 
     { 
      JCheckBox chbox = (JCheckBox)jb; 
      if(chbox.isSelected()) 
      countItems++; 
     } 
    } 

は、誰もが、問題が何であるかを知っていますか?

はあなたに

EDITありがとう:ここではxmlです:

<Form version="" maxVersion"" type=""> 
    <AuxValues> 
    </AuxValues> 
    <Layout> 
    </Layout> 
    <SubComponents> 
    <Component class="javax.swing.JCheckBox" name="jCheckBox1"> 
     <Properties> 
     <Property name="text" type="java.lang.String" value="Cheese"/> 
     </Properties> 
    </Component> 
    <Component class="javax.swing.JCheckBox" name="jCheckBox2"> 
     <Properties> 
     <Property name="text" type="java.lang.String" value="Sausage"/> 
     </Properties> 
    </Component> 
    <Component class="javax.swing.JCheckBox" name="jCheckBox3"> 
     <Properties> 
     <Property name="text" type="java.lang.String" value="Pepperoni"/> 
     </Properties> 
    </Component> 
    <Component class="javax.swing.JCheckBox" name="jCheckBox4"> 
     <Properties> 
     <Property name="text" type="java.lang.String" value="Mushroom"/> 
     </Properties> 
    </Component> 
    </SubComponents> 
</Form> 
+1

[SSCCE](http://sscce.org/)を投稿するとすぐに役立ちます。 –

答えて

3

チェックボックスがJPanelのような別のコンテナ内にある場合は、コンテナコンポーネントでgetcomponentsを呼び出す必要があります。そうしないと、jframe内に別のコンテナコンポーネントが見つかったときに再帰的に呼び出すメソッドを作成できますすべての階層...

+0

編集後に私の投稿をチェックしてください。xmlを追加しました。ありがとうございました! – gumenimeda

+0

私はJpanelを追加し、Jpannel内でそれらをチェックしていました。ありがとう! – gumenimeda

4

"これ" とは何ですか? JFrame?その場合、その検索で取得するJFrame上のコンポーネントはcontentPaneだけであり、JCheckBoxはコンポーネント階層内で見た目よりも深い可能性が高いことを理解しています。

自分で簡単にして、JCheckBoxをArrayListなどのコレクションに入れないでください。数が少ない場合は、変数名を使用します。フォームの作成を示していないとして

+1

またはButtonGroup +1 – mKorbel

+0

@mKorbel:私は通常、JRadioButtonsにButtonGroupを使用します。通常、JCheckBoxの選択は相互に排他的ではありません。 –

+0

合意した配列が最適です... – mKorbel

3

(ところで、JFormあるものは?)私の最高の推測では、チェックボックス自体がthisの子であるthisが、いくつかのパネルまたは他のコンテナの子ではないということです。再帰的に行う必要があるすべてのコンポーネント、つまりif (jb instancof Container) <iterate over children>の反復処理のアプローチに従ってください。

しかし、この方法はあまりよくありません。 JCheckBoxの場合は、ButtonModelとなり、関連データを保持するフィッティングデータ構造の状態を変更する可能性があります。

+0

編集後に投稿をチェックしてください。xmlを追加しました。ありがとうございました! – gumenimeda

+0

このXMLはどこから由来していますか?いくつかのGUIビルダー?どのコンテキスト(メソッド、クラス)において、あなたが提示したコードのスニペットを実行しますか? –

関連する問題