Hallo,
gibt es irgendjemand der mir bei folgendem Problem helfen kann. Ich möchte die Optionen einer JComboBox abhängig von der Auswahl in zwei vorherigen machen. Ich habe hier im Forum ein gutes Beispiel gefunden fuer 2 Checkboxen (da gibts Kategorie (z.B. Fleisch) und Sorte (z.B Rind)). Ich suche eine einfache Möglichkeit das Beispiel für meine Anforderungen anzupassen (Mit der Linked HashMap könnte das schwirig werden, oder?).
Es geht in meinem Code um die Konfiguration eines Teilstuecks eines Gepäckförderbands (genauer gesagt einer T-förmigen Weiche mit EINEM Eingang und ZWEI Ausgängen). Im Prinzip muss jeweils die im vorherigen JComboBox gewählte Option im nächsten wegfallen. D.h in der ersten sind alle 4 Himmelsrichtungen verfügbar, im zweiten 4 minus die im ersten gewählte Option, im dritten 4 minus die in JComboBox 1 und 2 gewählten Optionen.
Es scheint derzeit zu klappen ist aber extrem hässlich mit vielen if's etc fuer das erstellen des JComboBoxModel der letzten JComboBox...irgendwelche einfacheren Vorschläge?
Hier mal etwas Code (ist aber im Prinzip wie das eine Beispiel hier im Forum):
gibt es irgendjemand der mir bei folgendem Problem helfen kann. Ich möchte die Optionen einer JComboBox abhängig von der Auswahl in zwei vorherigen machen. Ich habe hier im Forum ein gutes Beispiel gefunden fuer 2 Checkboxen (da gibts Kategorie (z.B. Fleisch) und Sorte (z.B Rind)). Ich suche eine einfache Möglichkeit das Beispiel für meine Anforderungen anzupassen (Mit der Linked HashMap könnte das schwirig werden, oder?).
Es geht in meinem Code um die Konfiguration eines Teilstuecks eines Gepäckförderbands (genauer gesagt einer T-förmigen Weiche mit EINEM Eingang und ZWEI Ausgängen). Im Prinzip muss jeweils die im vorherigen JComboBox gewählte Option im nächsten wegfallen. D.h in der ersten sind alle 4 Himmelsrichtungen verfügbar, im zweiten 4 minus die im ersten gewählte Option, im dritten 4 minus die in JComboBox 1 und 2 gewählten Optionen.
Es scheint derzeit zu klappen ist aber extrem hässlich mit vielen if's etc fuer das erstellen des JComboBoxModel der letzten JComboBox...irgendwelche einfacheren Vorschläge?
Hier mal etwas Code (ist aber im Prinzip wie das eine Beispiel hier im Forum):
Code:
/* Daten */
final String[] inNord = { "Osten","Sueden", "Westen" };
final String[] inOsten = { "Norden","Sueden", "Westen" };
final String[] inSueden = { "Norden","Osten", "Westen" };
final String[] inWesten = { "Norden","Osten","Sueden" };
final Map<String, String[]> outs1 =
new LinkedHashMap<String, String[]>();
outs1.put("Norden", inNord);
outs1.put("Osten", inOsten);
outs1.put("Sueden", inSueden);
outs1.put("Westen", inWesten);
String[] sa = {"Norden","Osten","Sueden","Westen"};
/* Modelle */
final ComboBoxModel insModell =
new DefaultComboBoxModel(new Vector<String>(outs1.keySet()));
final DefaultComboBoxModel out1Modell =
new DefaultComboBoxModel(inNord);
final DefaultComboBoxModel out2Modell =
new DefaultComboBoxModel(sa);
/* Verbindung beider Modelle */
insModell.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 */
final String in =
(String) insModell.getSelectedItem();
out1Modell.removeAllElements();
for (String out1 : outs1.get(in)) {
out1Modell.addElement(out1);
}
out1Modell.setSelectedItem(out1Modell.getElementAt(0));
}
}
});
/* Komponenten */
final JComboBox insCombo = new JComboBox(insModell);
final JComboBox out1_Combo = new JComboBox(out1Modell);
final JComboBox out2_combo = new JComboBox(out2Modell);
int answer = JOptionPane.showOptionDialog(null, new JComboBox[] { insCombo,
out1_Combo, out2_combo }, "Ein und Ausgaenge der Weiche auswaehlen", JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE, null, null, null);