簡體   English   中英

我可以將ComboBoxModel轉換為int嗎?

[英]Can I convert ComboBoxModel to int?

這是我的代碼:

ComboBoxModel arrDiv1 = new DefaultComboBoxModel(new String[]{"Alaminos 
City", "Batac City", "Candon City", "Dagupan City",
"Ilocos Norte", "Ilocos Sur", "La Union", "Laoag City", "Pangasinan I", 
"Pangasinan II", "San Carlos",
"San Fernando", "Urdaneta City", "Vigan City"});

ComboBoxModel arrDiv2 = new DefaultComboBoxModel(new String[]{"Batanes", 
"Cagayan", "Cauayan City", "City of Ilagan",
"Isabela", "Nueva Vizcaya", "Quirino", "Santiago City", "Tuguegarao City"});

ComboBoxModel arrDiv3 = new DefaultComboBoxModel(new String[]{"Angeles 
City", "Aurora", "Balanga City", "Bataan", "Bulacan",
"Cabanatuan City", "Gapan City", "Mabalacat City", "Malolos City", 
"Meycauayan City", "Munoz Science City",
"Nueva Ecija", "Olongapo City", "Pampanga", "San Fernando City", "San Jose 
City", "San Jose del Monte City",
"Tarlac", "Tarlac City", "Zambales"});  


if(cboRegion.getSelectedIndex()==0) {
    cboDivision.setEnabled(false);
}
else if(cboRegion.getSelectedIndex()==1) {
    cboDivision.setModel(arrDiv1);
}
else if(cboRegion.getSelectedIndex()==2) {
    cboDivision.setModel(arrDiv2);
}
else if(cboRegion.getSelectedIndex()==3) {
    cboDivision.setModel(arrDiv3);
}

我想將其放在for循環中以縮短代碼。

if(cboRegion.getSelectedIndex()==ctr) {
    if(ctr==0) {
        cboDivision.setEnabled(false);
    }
    cboDivision.setModel(?????);
}

但是,我不知道在括號中放什么,因為ComboBoxModel不是int。 而且我不知道該放些什么。

這些arrDiv1,arrDiv2等是什么?

實際上這並不重要,問題是更通用的Java,與組合框無關。 如果將它們作為命名屬性,則無法真正輕松地添加它們。 名稱中的索引指出您可能可以將它們保存在集合中。 例如:

而不是

Something arrDiv1;
Something arrDiv2;
Something arrDiv3;

有類似的東西

List<Something> arrDivs=new ArrayList<>();
arrDivs.add(arrDiv1);
arrDivs.add(arrDiv2);
//  etc.

這樣,您將在集合中保存類似的對象,而不用為其命名為1,2,3等。從長遠來看,如果需要添加更多元素(使代碼更通用),這將很有幫助。 另一個解決方案是使用名稱中的index來制作越來越多的屬性。

然后您的代碼可以像這樣:

if (cboRegion.getSelectedIndex() == ctr) {
      if (ctr == 0) {
         cboDivision.setEnabled(false);                                
      }

      // Maybe add a check for out of bounds?
      cboDivision.setModel(arrDivs.get(getSelectedIndex())); 
}

將代碼放在for循環中對您沒有任何好處,因為實際上只有一次迭代才能完成任何工作。 因此,我建議保留if語句。 如果要縮短代碼,一種選擇是為arrDiv元素創建某種映射並使用以下代碼:

int index = cboRegion.getSelectedIndex();
if(index == 0) {
  cboDivision.setEnabled(false);
} else {
  cboDivision.setModel(map.get(index));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM