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

Fre*_*ek8 5 java checkbox swing

我在Java中有一个对话框,向用户提供~15个复选框.有没有办法一次性获取所有选中复选框的名称?目前,如果他们被选中,我一个接一个地看,这不是一个解决方案的幻想.

我正在寻找类似于在数组中获取所有选中复选框的内容,但之后在Java中

Dav*_*ton 8

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


chu*_*ubs 7

List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();
for( Component comp : panel.getComponents() ) {
   if( comp instanceof JCheckBox) checkboxes.add( (JCheckBox)comp );
}
Run Code Online (Sandbox Code Playgroud)

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