Dieser Code ist schlampig, ich würde auch ein Feedback dazu begrüßen.Dynamischer JComboBox-Inhalt basierend auf dem Inhalt einer anderen JComboBox
Ich versuche, den Wert einer JComboBox basierend auf dem Wert einer anderen JComboBox zu ändern. Es gibt eine zusätzliche Komplikation darin, dass ich eine zusätzliche Klasse verwende, um zu bestimmen, welches Array von Zeichenfolgen zurückgegeben werden soll (siehe meine vorherige Frage).
In der Theorie der Code Ich habe funktionieren soll:
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);
und das Verfahren zur Rückführung des Gebäude Array:
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"};
}
}
Aber anstatt eine lesbare Zeichenfolge zurückzugeben, gibt es die folgenden :
[Ljava.lang.String;@917081d
ich habe keine Ahnung wie man das entschlüsselt, obwohl es wie eine Gedächtnisreferenz aussieht. Wo gehe ich falsch?
Damit wir Ihnen helfen, haben Sie uns das 'getBuildingList.buildingSelectList (String arg)' Methode zur Verfügung zu stellen, wie es scheint, dass dies der Teil ist, wo aufsteht etwas messed ... Und Sie sollten sich wirklich daran gewöhnen, Klassennamen mit einem Großbuchstaben zu beginnen, denn sonst wird es für jemanden, der Ihren Code liest, sehr verwirrend. – Raven
@Raven Ich nenne Klassen im Format [LC] [UC +], wo auch immer sie sind Sie werden als Unterobjekte anstelle von Primärklassen verwendet - es gibt eine Methode, die dies unterstützt, obwohl sie nicht auf Java basiert. Ich bin technisch ein C# -Programmierer ... – Wolfish
Okay dann ... Aber wir brauchen immer noch diese Methode;) – Raven