java - 将组件数组(panel.getComponents())存储到数组列表

标签 java swing arraylist jcomponent

我有 3 个复选框并计划添加更多,我需要确定它是否被选中。所以我所做的就是将它们放入 JCheckBox 的 ArrayList 中。顺便说一句,我正在使用SMALLINT我会使用的 apache derby 数据类型 preparedStatement.getBoolean() ;

ArrayList<JCheckBox> homeCbxs = new ArrayList<>();
homeCbxs.add(updateUserNameCheckBox); // 0
homeCbxs.add(updatePasswordCheckBox); // 1
homeCbxs.add(updatePhotoCheckBox); // 2

int x = 0; 
for(JCheckBox cb : homeCbxs){
    Boolean bool;
    bool = cb.isSelected();
    //preparedStatement here, ps.setInt(x,bool)
    x++;
}

我想也许我可以使用 getComponents()方法返回一个组件数组,这样我就可以获得面板内的所有复选框。

也许就像,

ArrayList<JCheckBox> homeCbxs = homePermssionsCheckBoxPanel.getComponents();

而不是一一添加它们,

homeCbxs.add(updateUserNameCheckBox); // 0
homeCbxs.add(updatePasswordCheckBox); // 1
homeCbxs.add(updatePhotoCheckBox); // 2

但是,问题是ArrayList<JComponents>不会接受数组。我收到一条错误消息:不兼容的类型:无法转换组件[] ArrayList<JCheckBox>

你有什么建议吗?任何强制转换或进行一些转换的解决方法。我只是想缩短代码行数。 :D

另外,我想问一下是否 getComponents()分配 0 作为其数组的第一个索引。

如果有任何帮助,我将不胜感激。

最佳答案

创建您自己的实用方法来获取组件。

public List<Component> getComponentsAsList (Container cont){
    return Stream.of(cont.getComponents())
                 .collect(Collectors.toList());
}

然后,您只需不要忘记将它们转换为 JCheckBox 来检查它们是否被选中。

List<Component> list = getComponentsAsList(homePermssionsCheckBoxPanel);

for(Component c : list){
    if (!(c instanceof JCheckBox)) continue;
    if (((JCheckBox)c).isSelected()){
        // doStuff
    }
}
<小时/>

public List<Component> getComponentsAsList (Container cont){
    List<Component> tmp = new ArrayList<>();
    for (Component c : cont.getComponents()) {
        tmp.add(c);
    }
    return tmp;
}

关于java - 将组件数组(panel.getComponents())存储到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35968696/

相关文章:

java - HttpsURLConnection 和 Cookie

java - swing:有没有办法让按钮/复选框只有在按下 SHIFT 或 CTRL 时才可单击?

java - J表。删除行。消耗事件以不再进一步分派(dispatch)

java - 在 JCheckBox 中有一个左右对齐的标签

Java JFrame 两个框架同时显示问题

android - bundle ArrayList <ArrayList<Integer>>

java - Java 中是否可以通过公共(public)字段对对象列表进行排序?

java - Sleeping Professor 中的信号量 代码追踪有问题吗?

java - 无法获取 org.hibernate.persister.entity.SingleTableEntityPersister 错误的构造函数

java - 如何使用数组列表存储坐标以在固定区域内绘制不同颜色的随机点?