我在JForm(SubComponents)中有几个复选框,并且我正在使用以下代码来检查选中了哪些:

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++;
        }
    }


有人知道问题出在哪里吗?

谢谢

编辑:这是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>

最佳答案

在这种情况下,也许您的复选框位于另一个容器(如JPanel)中,则应在容器组件上调用getcomponents,否则您可以创建一个方法,当在jframe中找到另一个容器组件时递归调用此方法,以便遍历所有层次结构。 。

07-27 13:59