Этот код неаккуратный, я бы также приветствовал некоторые отзывы об этом.Динамический контент JComboBox, основанный на содержимом другого JComboBox
Я пытаюсь изменить значение JComboBox на основе значения другого JComboBox. Существует дополнительное усложнение в том, что я использую дополнительный класс для определения того, какой массив строк вернется (см. Мой предыдущий вопрос).
В теории, код, который я должен работать:
String[] siteSelectStrings = {"Site", "London", "Long Island"};
JComboBox regSiteSelectBox = new JComboBox(siteSelectStrings);
regSiteSelectBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent arg0) {
getBuildingList gbl = new getBuildingList();
regBuildingSelectBox.addItem(gbl.buildingSelectList((String)(regSiteSelectBox.getSelectedItem())));
}
});
regSiteSelectBox.setBounds(24, 336, 282, 20);
contentPane.add(regSiteSelectBox);
regBuildingSelectBox = new JComboBox();
regBuildingSelectBox.setBounds(24, 367, 282, 20);
contentPane.add(regBuildingSelectBox);
и способ возвращения массива здания:
public class getBuildingList {
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"};
}
}
Но, вместо того чтобы вернуться разборчивой строкой, она возвращает следующее :
[Ljava.lang.String;@917081d
Я понятия не имею, как декодировать это, хотя это похоже на ссылку на память. Где я иду не так?
Для того, чтобы нам помочь вам, вы должны предоставить нам 'getBuildingList.buildingSelectList (String ARG)' метод, как это кажется, что это та часть, где-то испортится ... И вы действительно должны привыкнуть, чтобы начинать имена классов с заглавной буквы, потому что в противном случае это становится очень запутанным для кого-то другого, читающего ваш код. – Raven
@Raven Я обычно называю классы в формате [LC] [UC +], где бы они ни находились используемые как под-объекты, а не первичные классы - существует методология, которая поддерживает это, хотя это не основанная на Java. Я технически программист на C# ... – Wolfish
Хорошо, тогда ... Но мы все равно нуждаемся в этом методе;) – Raven