Ich habe eine Combobox erstellt, die abhängig von den Inhalten einer anderen Combobox dynamisch bevölkert ist, und so weiter. Ich habe mich entschieden, obwohl es ein bisschen schrecklich ist, mit dem Inhalt des Quell-Arrays zu experimentieren, wenn ich das Ziel-Kombinationsfeld bevölkere. Obwohl dies zu Combobox-Inhalten führt, werden sie jedoch wiederholt. Ich bin durch den Code gegangen, und das Array wird nur einmal durchlaufen.Für (jede) Schleife zweimal füllt eine 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);
Der Code der Arrays enthält, ist wie folgt:
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"};
}
Und das Ergebnis:
Es kann nur einmal Schleife, aber wie oft ist das Ereignis feuern? Sie sollten das Kombinationsfeld vor dem Hinzufügen von Elementen löschen. (Auch wenn das Ereignis mehrere Male ausgelöst wird, müssen Sie das Problem möglicherweise separat lösen) – musefan
@musefan Ja, das ist richtig - es scheint jedoch nichts miteinander zu tun zu haben, da das Hinzufügen einer if-Klausel für eine bereits gefüllte Combobox das nicht ändert Ergebnis. – Wolfish
@Berger wow ... wirklich? Das ist seltsam ... danke für diesen Link – Wolfish