java - 遍历 Swing 中的所有复选框

标签 java swing checkbox

我正在使用 java 和 swing 开发一个小型应用程序,我面临一个问题,可能会让我从头开始做其中的一部分。

在其中一个面板中,我有大约 20 个复选框。到目前为止,变量名称为 jcheckbox1、jcheckbox2 等。我需要遍历所有变量并检索所选变量的文本。问题在于,我使用 NetBeans 通过根据需要拖放元素来开发 GUI,因此我没有将复选框聚合在列表或数组中。鉴于此,是否有可能选择所有复选框并迭代它们以检索选中的复选框的文本值?

如果没有,我应该如何以可以轻松迭代的方式声明它们?我相信一系列复选框本身可能并不难完成,但麻烦似乎来自将它们全部放在正确的位置。我正在使用带有两列的 gridbag,如果有帮助的话。

谢谢!

最佳答案

给定一个Container,你可以找到所有的子组件,然后检查它们是否是JCheckBox,然后检查它们是否被选中。

以下示例方法的灵感来自 How to get all elements inside a JFrame? ,并适应您的需求:

public static List<String> manageCheckedCheckboxes(final Container c) {
    Component[] comps = c.getComponents();
    List<String> checkedTexts = new ArrayList<String>();

    for (Component comp : comps) {

        if (comp instanceof JCheckBox) {
            JCheckBox box = (JCheckBox) comp;
            if (box.isSelected()) {

                String text = box.getText();
                checkedTexts.add(text);
            }
        }
    }

    return checkedTexts;

}

关于java - 遍历 Swing 中的所有复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41063002/

相关文章:

java - 类在两个集合上导出迭代器

java - eclipse中java的匹配花括号之间的垂直线

java - 包装 jframe

java - 如何使用 setAutoCreateColumnsFromModel(false) 从 TableModel 和 TableColumnModel 中删除 JTable 列?

c# - 如何在检查单元格后停止 DataGridView 编辑?

java - Auth0 的通用身份验证不允许注销

java - JFileChooser 在详细 View 中显示无效文件大小

javascript - 我想使用复选框来改变 var 的输出

javascript - 当某些 future 元素出现在 jQuery 中时更改它们的属性 - 这可能吗?

java - Map.entrySet()如何遍历hashMap