[英]Storing array of Components(panel.getComponents()) to Array List
我有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>
將不接受數組。 我收到一條錯誤消息,指出類型不兼容:Component []無法轉換為ArrayList<JCheckBox>
你有什么建議嗎? 強制轉換或進行某些轉換的任何解決方法。 我只是想縮短代碼行。 :d
另外,我想問一下getComponents()
將0分配為其數組的第一個索引。
我將不勝感激。
創建您自己的實用程序方法以獲取組件。
public List<Component> getComponentsAsList (Container cont){
return Stream.of(cont.getComponents())
.collect(Collectors.toList());
}
然后,您不必忘記將它們JCheckBox
轉換為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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.