2016-12-05 3 views
1

Я построил combobox, который динамически заполняется в зависимости от содержимого другого combobox и т. Д. Я решил, хотя это немного страшно, поэкспериментировать с итерированием содержимого исходного массива при заполнении целевого combobox. Однако, хотя это приводит к содержимому combobox, они повторяются. Я прошел через код, и массив выполняется только один раз.За цикл (каждый) дважды заполняется combobox

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"}; 
    } 

И результат:

enter image description here

+0

Это может быть цикл только один раз, но сколько раз срабатывает событие? Вы должны просто очистить поле со списком до добавления элементов. (также, если событие срабатывает несколько раз, вам может потребоваться решить эту проблему отдельно) – musefan

+0

@musefan Да, это правильно - однако это, по-видимому, не связано, так как добавление предложения if для уже заполненного combobox не изменяет результат. – Wolfish

+0

@Berger ничего себе ... на самом деле? Это странно ... спасибо за эту ссылку – Wolfish

ответ

0

Только предположение, но перед вызовом regBuildingSelectBox.addItem (s) ; вам, вероятно, придется сначала очистить его, иначе он просто добавит в список, а не заменит его. Там также может быть другой метод, который устанавливает значения vs add.

Смежные вопросы