我在Java中有一个对话框,向用户提供~15个复选框。有没有办法一次性获取所有选中复选框的名称?目前,如果他们被选中,我一个接一个地看,这不是一个解决方案的幻想。
我正在寻找类似于Getting all selected checkboxes in an array的东西,但是在Java
中答案 0 :(得分:8)
当您将复选框添加到对话框时,还要在某种集合中保留引用。然后,当您想要查看哪些被检查时,您可以迭代集合并检查每个集合的状态。您可以通过调用getText来获取名称。
答案 1 :(得分:7)
List<JCheckBox> checkboxes = new ArrayList<JCheckBox>();
for( Component comp : panel.getComponents() ) {
if( comp instanceof JCheckBox) checkboxes.add( (JCheckBox)comp );
}
这假定所有JCheckBox实例都是容器面板的直接子代。如果没有,那么你需要使用相同的逻辑以递归方式访问面板的所有容器。现在,虽然您可以这样做,但通常最好在将这些引用创建到列表中时保存这些引用。然后,您可以轻松地遍历所有复选框,而无需执行上述代码。如果你有嵌入式组件,最好让嵌入式组件在它拥有的复选框上执行你想要的任何操作(而不是通过getter将它们拉出组件,这样你就可以以某种方式搞乱它们)。