這段代碼是草率的,我也歡迎一些反饋意見。基於另一個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