Hallo Community
Habe zwei JComboBoxen, welche in Abhängikeit zueinander stehen.
schenkelLaengeLinksA und einstandLinksA.
In schenkelLaengeLinksA scheinen drei Strings auf: 20/20/20/2, 30/20/30/2 und 40/20/40/2.
In einstandLinksA dafür vorbeireitete Arrays: linksA20, linksA30 und linksA40.
Wenn nun zB:
"40/20/40/2" in der schenkelLaengeLinksA mittels Klick gewählt wird,
so erscheint in der einstandLinksA das passende Array: linksA40.
Die Werte aus den Boxen werden dann in eine DB gespeichert.
Das funktioniert klaglos.
Nun zum Problem:
Wir sprechen jetzt über ein CardLayout in einer Applikation.
Bei Neustart der Applikation respektive der Card mit den oben erwähnten JComboBoxen,
werden Standardwerte übergeben, da zu diesem Zeitpunkt die DB noch nicht abgefragt wird:
Wenn dann zur betreffenden Card navigiert wird, wird die DB abgefragt und die Werte übergeben:
Nun sollten die JComboBoxen auch diese zeigen, was aber nicht gelingt.
An dieser Stelle möchte ich nun betreffend dem 2. Wert "luft Links" einschränkend anführen:
Zuerst möchte ich die Schenkellänge (40/20/40/2, oder was auch immer in der DB steht) ausgeben,
dann erst kann ich mich um diesen kümmern.
Hier der Code für alles:
Wie man sehen kann, versuche ich die Standardwerte aus der Map zu löschen und mit den Neuen zu befüllen.
Auf der Konsolenausgabe funktionierts, leider auf der GUI in den JComboBoxen nicht.
Die Konsolenausgabe:
Wo liegt mein Denkfehler?
Wieso lassen sich die neuen Items nicht anzeigen?
Bitte helft mir weiter, danke
quidnovi
Habe zwei JComboBoxen, welche in Abhängikeit zueinander stehen.
schenkelLaengeLinksA und einstandLinksA.
In schenkelLaengeLinksA scheinen drei Strings auf: 20/20/20/2, 30/20/30/2 und 40/20/40/2.
In einstandLinksA dafür vorbeireitete Arrays: linksA20, linksA30 und linksA40.
Wenn nun zB:
"40/20/40/2" in der schenkelLaengeLinksA mittels Klick gewählt wird,
so erscheint in der einstandLinksA das passende Array: linksA40.
Die Werte aus den Boxen werden dann in eine DB gespeichert.
Das funktioniert klaglos.
Nun zum Problem:
Wir sprechen jetzt über ein CardLayout in einer Applikation.
Bei Neustart der Applikation respektive der Card mit den oben erwähnten JComboBoxen,
werden Standardwerte übergeben, da zu diesem Zeitpunkt die DB noch nicht abgefragt wird:
Java:
aLinks("0",p.intToString(0));
Java:
aLinks(uLinks, p.intToString(luftLinks));
An dieser Stelle möchte ich nun betreffend dem 2. Wert "luft Links" einschränkend anführen:
Zuerst möchte ich die Schenkellänge (40/20/40/2, oder was auch immer in der DB steht) ausgeben,
dann erst kann ich mich um diesen kümmern.
Hier der Code für alles:
Java:
public void aLinks(String uGroesse, String luftLinks) {
/* Daten */
String[] leer = { "---" };
String[] linksA20 = { "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14" };
String[] linksA30 = { "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24" };
String[] linksA40 = { "5", "6", "7", "8", "9", "10", "11", "12", "13",
"14", "15", "16", "17", "18", "19", "20", "21", "22", "23",
"24", "25", "26", "27", "28", "29", "30", "31", "32", "33",
"34" };
final Map<String, String[]> schenkelLaengeLinksA = new LinkedHashMap<String, String[]>();
// Das hier will nicht so wie ich :-(
if (uGroesse.equals("40/20/40/2")) {
// remove Items
schenkelLaengeLinksA.remove("20/20/20/2");
schenkelLaengeLinksA.remove("30/20/30/2");
schenkelLaengeLinksA.remove("40/20/40/2");
// add Items
schenkelLaengeLinksA.put("40/20/40/2", linksA40);
schenkelLaengeLinksA.put("----", leer);
schenkelLaengeLinksA.put("20/20/20/2", linksA20);
schenkelLaengeLinksA.put("30/20/30/2", linksA30);
System.out.println("Zeige 40erHashMap: " + schenkelLaengeLinksA);
}
// Es wird immer nur der Standard hier ausgegeben
else {
schenkelLaengeLinksA.put("20/20/20/2", linksA20);
schenkelLaengeLinksA.put("30/20/30/2", linksA30);
schenkelLaengeLinksA.put("40/20/40/2", linksA40);
}
/* Modelle */
schenkelLinksA = new DefaultComboBoxModel<String>(new Vector<String>(schenkelLaengeLinksA.keySet()));
einstandLinksA = new DefaultComboBoxModel<String>(linksA20);
/* Verbindung beider Modelle */
schenkelLinksA.addListDataListener(new ListDataListener() {
@Override
public void intervalAdded(ListDataEvent e) {
}
@Override
public void intervalRemoved(ListDataEvent e) {
}
@Override
public void contentsChanged(ListDataEvent e) {
if (e.getIndex0() == -1 && e.getIndex1() == -1) {
/* Selektierte Kategorie hat sich geändert */
String kategorieSchenkel = (String) schenkelLinksA.getSelectedItem();
System.out.println("UProfil aLinks kategorieSchenkel: " + kategorieSchenkel);
einstandLinksA.removeAllElements();
for (String sorteEinstand : schenkelLaengeLinksA.get(kategorieSchenkel)) {
einstandLinksA.addElement(sorteEinstand);
}
einstandLinksA.setSelectedItem(einstandLinksA.getElementAt(0));
}
}
});
}
Wie man sehen kann, versuche ich die Standardwerte aus der Map zu löschen und mit den Neuen zu befüllen.
Auf der Konsolenausgabe funktionierts, leider auf der GUI in den JComboBoxen nicht.
Die Konsolenausgabe:
Code:
Zeige 40-er HashMap: {40/20/40/2=[Ljava.lang.String;@63155812, ----=[Ljava.lang.String;@63155812, 20/20/20/2=[Ljava.lang.String;@63155812, 30/20/30/2=[Ljava.lang.String;@e493890}
Wo liegt mein Denkfehler?
Wieso lassen sich die neuen Items nicht anzeigen?
Bitte helft mir weiter, danke
quidnovi