Java 如何检查JFrame中选中的复选框?
我在JFormSubComponents中有几个复选框,我正在使用此代码检查选中了哪些复选框: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
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中检查它们,结果成功了。谢谢