ComboBox Ergebnisse abhängig von anderer ComboBox - Wie?

visara

Mitglied
Hallo 🙂
ich habe 2x eine JComboBox und ich möchte, dass bestimmte Anzeigen bei der zweiten ComboBox ausgeblendet werden, wenn in der ersten etwas ausgewählt wurde.

z.B folgendes Szenario.
Man kann mit der ersten ComboBox eine Essenskategorie wählen z.B Beliebig, Kuchen oder Fleisch.
Mit der zweiten sollen dann die Gerichte angezeigt werden.
Wenn jetzt Beliebig gewählt wurde sollen natürlich alle möglichen Gerichte erscheinen, wenn ich aber mit der ersten Box Kuchen gewählt habe, sollen nur die Kuchengerichte zur Auswahl erscheinen.

Ich hab einfach keinen Ansatz, kann mir vielleicht jemand helfen?

Grüße 🙂
 
Ok habe den ActionListener hinzugefügt und die actionperformed Methode auch gefüllt.
Der Listener funktioniert auch, also er reagiert auf die Methode, wenn ich einen Eintrag in der ComboBox auswähle.
Was ich nun aber nicht hinkriege, ist das Ändern der Einträge in der zweiten Box.
ich habe das fertig präparierte Array und schreibe dann einfach:
Java:
gerichteBox = new JComboBox<String>(gewaehlteGerichte);
gewaehlteGerichte ist eben das Array mit den entsprechenden Einträgen.

Es gibt zwar keinen Fehler, aber er beschränkt einfach die Auswahl nicht.
die gerichteBox liegt in einem JPanel.
Kann es sein, dass ich die gerichteBox nach dem neuen initialisieren, nochmal in das JPanel einsetzen muss??
Wenn ja, wie soll denn das gehen? :bahnhof:
 
Du musst mit dem Model der JComboBox arbeiten, also anstatt eine neue Combobox zu erstellen nimmst du die bestehende, holst dir das Model (oder schreibst dir selbst eins), löschst die bisher enthaltenen Daten und fügst die neuen hinzu. Du tauschst halt nur die Daten aus und nicht die grafische Komponente. Die bleibt gleich.
 
Ok, was genau meinst du aber mit Model?? ^^
Das höre ich gerade zum ersten mal und kann damit nicht viel gerade anfangen.
Muss ich eigentlich um die Daten zu ändern, mir die ComboBox-Komponente über das JPanel holen, oder funktioniert das Ändern auch wenn ich die ComboBox direkt anspreche, über die Variable?
 
Ok, was genau meinst du aber mit Model? Das höre ich gerade zum ersten mal und kann damit nicht viel gerade anfangen.

Es gibt halt die Trennung zwischen Model (Daten) und View (grafische Komponente). Die JComboBox hat intern auch schon so ein einfaches Model, du kannst aber auch ein eigenes erstellen, wenn das andere nicht ausreicht. Der Vorteil ist, dass du dann nur die Daten austauschen musst und die Anzeige der Daten aktualisiert wird. Musst du mal im Internet suchen, da gibt es bestimmt jede Menge Tutorials oder Beispiele.

Muss ich eigentlich um die Daten zu ändern, mir die ComboBox-Komponente über das JPanel holen, oder funktioniert das Ändern auch wenn ich die ComboBox direkt anspreche, über die Variable?

Hmm, keine Ahnung, ob ich das richtig verstehe. Du musst dir von der Combobox das Model holen (also das Objekt/die Variable deiner Combobox ansprechen) oder, wenn du ein eigenes Model erstellt hast, das dann ansprechen und dort die Daten ändern.
 
Am einfachsten wäre es für dich wohl, einfach eine neues DefaultComboBoxModel zu erstellen und bei der ComboBox zu setzen. Es gibt natürlich elegantere Lösungen, wie ein eingenes Model, dass muss man aber erst mal programmieren.
Java:
gerichteBox.setModel( new DefaultComboBoxModel(gewaehlteGerichte));
 

Zurück
Oben