这段代码是草率的,我也欢迎一些反馈意见。基于另一个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(字符串ARG)'方法...你应该真的习惯用大写字母开始类名,否则它会让别人读取你的代码变得非常混乱 – Raven
@Raven我倾向于用[LC] [UC +]的形式命名类,无论它们在哪里用作子对象而不是主类 - 有一种支持这种方法的方法,尽管它不是基于Java的。我在技术上是一个C#程序员... – Wolfish
好吧然后...但我们仍然需要这种方法;) – Raven