我有 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
}
}
<小时/>
java-7
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/