获取Java中的所有选中复选框

获取Java中的所有选中复选框,java,swing,checkbox,Java,Swing,Checkbox,我有一个Java对话框,向用户显示约15个复选框。有没有办法一次获取所有选中复选框的名称?目前,如果他们被选中,我会一个接一个地寻找,这不是一个很好的解决方案 我正在寻找类似的东西,但在Java中,列表复选框=new ArrayList(); List<JCheckBox> checkboxes = new ArrayList<JCheckBox>(); for( Component comp : panel.getComponents() ) { if( comp

我有一个Java对话框,向用户显示约15个复选框。有没有办法一次获取所有选中复选框的名称?目前,如果他们被选中,我会一个接一个地寻找,这不是一个很好的解决方案

我正在寻找类似的东西,但在Java中,

列表复选框=new ArrayList();
List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();
for( Component comp : panel.getComponents() ) {
   if( comp instanceof JCheckBox) checkboxes.add( (JCheckBox)comp );
}
对于(组件组件:panel.getComponents()){ if(JCheckBox的comp instanceof JCheckBox)复选框。添加((JCheckBox)comp); }

这假设所有JCheckBox实例都是容器面板的直接子级。如果没有,那么您需要使用相同的逻辑递归访问panel的所有容器。现在,虽然您可以这样做,但通常最好在创建这些引用时将其保存到列表中。然后,您可以轻松地遍历所有复选框,而无需执行上述代码。如果您有嵌入式组件,最好让嵌入式组件在其拥有的复选框上执行您想要的任何操作(而不是通过getter将其从组件中拉出,以便以某种方式将其弄乱).

当您将复选框添加到对话框时,也会在某种类型的集合中保留一个引用。然后,当您想查看哪些是已检查的时,您可以迭代集合并检查每个集合的状态。您可以通过调用getText来获取名称。

并非所有内容都必须是花哨的,它确实如此。可能以后会添加或删除复选框,我不想每次都对动作处理程序进行手工编码,你在说什么样的复选框?JCheckBox?您在servlet中吗?在MVC框架中?或者,在创建对话框时,可以将复选框添加到
ArrayList
。这样,它们就不必是容器面板的直接子对象。@user949300是的,我在回答中也描述了这个确切的方法。这似乎是一个更简单的解决方案。但是,我用Netbeans中的可视化编辑器创建了复选框,是否有办法向Netbeans自动生成的代码添加内容?您可以修改Netbeans自动生成的代码。这样做可能会使再次使用可视化编辑器变得困难。我对Netbeans可视化编辑器不太熟悉,不知道它是如何工作的。如果它创建了一个资源文件或gens代码,是否有一个API来处理它可能生成的资源文件。这一切都是未知的。