Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查JFrame中选中的复选框?_Java_Swing_Jframe_Jcheckbox - Fatal编程技术网

Java 如何检查JFrame中选中的复选框?

Java 如何检查JFrame中选中的复选框?,java,swing,jframe,jcheckbox,Java,Swing,Jframe,Jcheckbox,我在JFormSubComponents中有几个复选框,我正在使用此代码检查选中了哪些复选框: countItems = 0; for(Component jb: this.getComponents()) { if((jb instanceof JCheckBox) ) //I never get pass this point(its always false) { JCheckBox chbox = (JChec

我在JFormSubComponents中有几个复选框,我正在使用此代码检查选中了哪些复选框:

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>

这是什么?JFrame?如果是这样的话,您就会明白,通过搜索可以直接在JFrame上获得的唯一组件是contentPane,并且您的JCheckbox在组件层次结构中可能比您要查找的位置更深


为什么不让自己轻松一点,把jcheckbox放在一个集合中,比如ArrayList。或者如果数量很少,请使用它们的变量名。

这是什么?JFrame?如果是这样的话,您就会明白,通过搜索可以直接在JFrame上获得的唯一组件是contentPane,并且您的JCheckbox在组件层次结构中可能比您要查找的位置更深


为什么不让自己轻松一点,把jcheckbox放在一个集合中,比如ArrayList。或者如果数量很少,请使用它们的变量名。

因为您没有显示表单的创建。顺便说一句,什么是JForm?我最好的猜测是,复选框不是这个的子项,而是某个面板或其他容器本身就是这个的子项。如果您想遵循迭代所有组件的方法,则需要递归地进行迭代,即如果jb instancof容器


但这种方法并不太好。您需要记住复选框以便轻松查询它们的状态,或者您应该使用模型,在JCheckBox的情况下,它将是ButtonModel,它可以改变保存相关数据的拟合数据结构的状态。

因为您没有显示表单的创建。顺便说一句,什么是JForm?我最好的猜测是,复选框不是这个的子项,而是某个面板或其他容器本身就是这个的子项。如果您想遵循迭代所有组件的方法,则需要递归地进行迭代,即如果jb instancof容器


但这种方法并不太好。您需要记住复选框以便轻松查询其状态,或者使用模型,在JCheckBox的情况下,ButtonModel可能会改变保存相关数据的合适数据结构的状态。

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

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

@mKorbel:我通常保留按钮组用于JRadioButtons,非JCheckBox按照惯例规定JCheckBox选择不应相互排斥。@mKorbel:我通常保留用于JRadioButtons的按钮组,而非JCheckBox按照惯例规定JCheckBox选择不应相互排斥。要尽快获得更好的帮助,请发布一条消息。要尽快获得更好的帮助,发布。这个XML来自哪里?一些GUI构建者?您在什么上下文方法、类中执行您呈现的代码片段?此XML来自何处?一些GUI构建者?在什么样的上下文方法中,类执行您提供的代码片段?我添加了一个Jpanel,并在一个Jpanel中检查了它们,它成功了。谢谢我添加了一个Jpanel,并在一个Jpanel中检查它们,结果成功了。谢谢