2016-12-05 54 views
1

我已經構建了一個組合框,根據另一個組合框的內容動態填充,依此類推。我已經決定,雖然有點可怕,但在填充目標組合框時嘗試迭代源數組的內容。但是,雖然這會導致組合框內容,但它們會重複。我已經遍歷了代碼,並且該數組只被迭代一次。對於(每個)循環兩次 - 填充組合框

private JComboBox regBuildingSelectBox; 
... 
String[] siteSelectStrings = {"Site", "London", "Long Island"}; 
    JComboBox regSiteSelectBox = new JComboBox(siteSelectStrings); 
    regSiteSelectBox.addItemListener(new ItemListener() { 
     public void itemStateChanged(ItemEvent arg0) { 
      getDropDownVariables gddv = new getDropDownVariables(); 
      for(String s: 
        gddv.buildingSelectList 
          (regSiteSelectBox.getSelectedItem().toString())) 
      { 
       regBuildingSelectBox.addItem(s); 
      } 
     } 
    }); 
    regSiteSelectBox.setBounds(24, 336, 282, 20); 
    contentPane.add(regSiteSelectBox); 


    regBuildingSelectBox = new JComboBox(); 

    regBuildingSelectBox.setBounds(24, 367, 282, 20); 
    contentPane.add(regBuildingSelectBox); 

包含陣列的代碼如下:

public class getDropDownVariables { 

    public String[] buildingSelectList(String site) 
    { 
     switch (site) 
     { 
     case "London": 
      return new String[] {"Building", "Harvell", 
           "LYNX Complex", "Caroline", "Salters"}; 
     case "Long Island": 
      return new String[] {"Building", "Phillips", "Pascal"}; 
     } 
     return new String[] {"Failed to populate buildings"}; 
    } 

而結果:

​​

+0

它只能循環一次,但事件觸發多少次?添加項目之前,您應該清除組合框。 (另外,如果事件多次觸發,則可能需要單獨解決該問題) – musefan

+0

@musefan是的,這是正確的 - 但它看起來無關,因爲爲已填充的組合框添加if子句不會更改結果。 – Wolfish

+0

@Berger哇......真的嗎?這很奇怪......感謝那個鏈接 – Wolfish

回答

0

只是一個猜測,但你打電話之前regBuildingSelectBox.addItem(一個或多個) ;你可能必須先清除它,否則它會一直添加到列表中而不是替換它。也有可能是一個不同的方法來設置值與添加。