"Dynamische JComboBoxes"

Wang

Bekanntes Mitglied
Hallo,

es geht um folgende Problemstellung.
Ein Teil des Programms liest die Datenbank aus und zeigt den Inhalt in einer JTable an:

databasewb.png


Nun soll es mehrere JComboBoxes geben, um eine individualisierte, weitere Datenbank-Anfrage zu erstellen (es interessiert dann im Grunde genommen nur die ID, welche in einer anderen Relation den Fremdschlüssel bildet):

selectionj.png


Am Anfang sollen alle JComboBoxes blank sein. So wie ich das sehe, müssen von Beginn an alle entsprechenden Werte aus der Datenbank ausgelesen und in die Boxen geschrieben werden (da in der Datenbank z.B. nicht alle Altersstufen vorhanden sind, kann man nicht einfach alle Werte von z.B. 1-100 durchgehend darstellen).
Soweit so gut. Ab da wird es aber kompliziert, wie das folgende Beispiel zeigt:
Angenommen der User wählt nun das Alter 20 aus, dann muss das Programm dafür sorgen, dass in den anderen Boxen nur Werte auftauchen, die gemeinsam mit der 20 in der Datenbank ein Tupel bilden. Nun kann der User natürlich seine bisherige Auswahl weiter einschränken und sich auf ein bestimmtes Geschlecht festlegen und/oder einen bestimmten Beruf.

Hoffe das war verstänlich genug geschildert.
Ich wollte Euch fragen, ob Ihr irgendwelche Vorschläge habt, wie man dieses Problem am leichtesten lösen kann und ob es evtl. bereits "was Fertiges" gibt?

Vielen Dank für Eure Mühe!

Gruß
Wang
 
Zuletzt bearbeitet:

DanZ

Bekanntes Mitglied
Mir ist grad nicht ganz klar was genau dein Problem ist... So wie ich das verstehe ist dir klar, wie du die JComboBoxes in den TableHeader bauen kannst und auch nach der Datenbankabfrage mit Werten befüllst aber weißt nicht, wie du bei einer Änderung in einer der Comboboxes die anderen Anpassen kannst? Du hast die Daten doch irgendwo, mindestens im TableModel. Dann kannst du doch einfach darüber iterieren und nur die Datenreihen auf die der aktuelle Filter passt für die neuen Auswahlmöglichkeiten berücksichtigen.
 

Wang

Bekanntes Mitglied
Genau das ist mein Problem. :)
Also an jeder der drei "Combos" muss wohl ein Listener hängen (BTW: wäre das der ActionListener?), um mit Änderungen umzugehen.
Wenn ich nicht völlig auf dem Holzweg bin, müsste es doch 9 if-Abfragen geben, oder wie seht Ihr das?

Also ausgehend von

selectionj.png


dann sowas wie:

- falls die Ereignisquelle die ageComboBox ist & in der genderComboBox keine Auswahl existiert & in der occupationComboBox ebenfalls keine Auswahl existiert:
lade in die genderComboBox & in die occupationComboBox die mit dem aktuellen age verknüpften Werte.
- falls die Ereignisquelle die ageComboBox ist & in der genderComboBox bereits eine Auswahl existiert & in der occupationComboBox keine Auswahl existiert:
lade in die occupationComboBox die mit den aktuellen age & gender verknüpften Werte.
- falls die Ereignisquelle die ageComboBox ist & in der genderComboBox keine Auswahl existiert & in der occupationComboBox eine Auswahl existiert:
lade in die genderComboBox die mit den aktuellen age & occupation verknüpften Werte.
---
- falls die Ereignisquelle die genderComboBox ist & in der ageComboBox keine Auswahl existiert & in der occupationComboBox ebenfalls keine Auswahl existiert:
lade in die ageComboBox & in die occupationComboBox die mit dem aktuellen gender verknüpften Werte.
- falls die Ereignisquelle die genderComboBox ist & in der ageComboBox eine Auswahl existiert & in der occupationComboBox keine Auswahl existiert:
lade in die occupationComboBox die mit den aktuellen age & gender verknüpften Werte.
- falls die Ereignisquelle die genderComboBox ist & in der ageComboBox keine Auswahl existiert & in der occupationComboBox eine Auswahl existiert:
lade in die ageComboBox die mit den aktuellen gender & occupation verknüpften Werte.
---
- falls die Ereignisquelle die occupationComboBox ist & in der ageComboBox keine Auswahl existiert & in der genderComboBox ebenfalls keine Auswahl existiert:
lade in die ageComboBox & in die genderComboBox die mit dem aktuellen occupation verknüpften Werte.
- falls die Ereignisquelle die occupationComboBox ist & in der ageComboBox eine Auswahl existiert & in der genderComboBox keine Auswahl existiert:
lade in die genderComboBox die mit den aktuellen age & occupation verknüpften Werte.
- falls die Ereignisquelle die occupationComboBox ist & in der ageComboBox keine Auswahl existiert & in der genderComboBox eine Auswahl existiert:
lade in die ageComboBox die mit den aktuellen gender & occupation verknüpften Werte.

Ein TableModel ist natürlich vorhanden, aber ich denke es ist doch einfacher, wenn ich im Rumpf der if-statements die entsprechenden SQL-Befehle eintrage und die Daten so aus der Datenbank gewinne.

Verbesserungvorschläge sind natürlich jederzeit sehr gerne gesehen. ;)
 

DanZ

Bekanntes Mitglied
Viel zu kompliziert :)

Ich würd folgendes Prinzip vorschlagen:

- Inhalt einer ComboBox wechselt -> refresh methode aufrufen
- Refreshmethode ließt Werte aus allen Comboboxes, erstellt daraus die Query und läd Daten neu aus der Datenbank
- Wenn die Daten da sind werden sie ins Model gesetzt und dabei werden die Auswahlmöglichkeiten für alle Comboboxes neu ausgewertet
 

Wang

Bekanntes Mitglied
Viel zu kompliziert :)

Das hatte ich befürchtet. :oops:

Nur zur Sicherheit, ob ich es richtig verstanden habe:
Am Anfang sind alle drei "Boxen" blank und deren jeweilige Werte liegen im "Verborgenen". User wählt als Alter z.B. 20, die refresh methode "merkt" sich die 20 und holt sich die aktuellen Werte der anderen "Boxen", wobei sie auch prüft, ob die beiden Strings leer sind oder nicht, um die SQL-Anfrage korrekt zu gestalten. ResultSet und der Rest sind dann eigentlich klar.

Hoffe ich habe es richtig verstanden...?
 

DanZ

Bekanntes Mitglied
Prinzipiell hast du es richtig verstanden. Die 20 brauchst du dir garnicht merken, die Refreshmethode muss garnicht wissen von welcher Combobox sie getriggert wurde. Sie ließt einfach - egal was passiert ist - die Werte aus allen dreien aus, überprüft ob sie leer sind oder Werte beinhalten und baut aus diesen Infos die Query zusammen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Dynamische ListView-Größe, die bei Fenstergrößenänderung sich anpasst AWT, Swing, JavaFX & SWT 19
M Dynamische Zellengröße und Zeilenumbruch AWT, Swing, JavaFX & SWT 7
M Java FX dynamische Diagramme AWT, Swing, JavaFX & SWT 0
Q-bert Dynamische Komponente erzeugen AWT, Swing, JavaFX & SWT 6
4a61766120617274697374 dynamische Tree View AWT, Swing, JavaFX & SWT 2
P JavaFX Dynamische TableView AWT, Swing, JavaFX & SWT 14
G Dynamische ComboBox AWT, Swing, JavaFX & SWT 3
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
S Jtable dynamische Spaltenbreite AWT, Swing, JavaFX & SWT 5
B SWT Dynamische GUI (Layoutmanager?) AWT, Swing, JavaFX & SWT 2
P Dynamische Seite zum basteln für den User AWT, Swing, JavaFX & SWT 8
B SWT TreeViewer dynamische Anzeige von Icons AWT, Swing, JavaFX & SWT 3
J Java - dynamische Anpassung an Fenstergröße? AWT, Swing, JavaFX & SWT 4
B Swing Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
C Swing Dynamische JComboBox (Filter) AWT, Swing, JavaFX & SWT 28
N Swing Dynamische Controls AWT, Swing, JavaFX & SWT 5
C JTable dynamische erweitern AWT, Swing, JavaFX & SWT 2
T 2D-Grafik Statisches Hintergrundbild, dynamische Bilder drüber AWT, Swing, JavaFX & SWT 2
N Dynamische JFreechart updated UI nicht AWT, Swing, JavaFX & SWT 5
G Große dynamische ContextMenus erzeugen (Eclipse RCP) AWT, Swing, JavaFX & SWT 4
F Swing Dynamische Größenanpassung AWT, Swing, JavaFX & SWT 4
trash Dynamische JTable (SQL) AWT, Swing, JavaFX & SWT 5
L Dynamische Textgröße bei Buttons AWT, Swing, JavaFX & SWT 3
lordcarlos Dynamische und interaktive grafik AWT, Swing, JavaFX & SWT 5
T Swing JTable dynamische Zeilenhöhe AWT, Swing, JavaFX & SWT 5
U Dynamische Panel hinzufügen AWT, Swing, JavaFX & SWT 6
N Swing Dynamische JRadioButtons und Visual Editor AWT, Swing, JavaFX & SWT 4
Q Dynamische Zahl und Positionierung von Objekten AWT, Swing, JavaFX & SWT 5
S Swing Dynamische JPanels: Vertikales Strecken verhindern AWT, Swing, JavaFX & SWT 4
hdi dynamische Iteration über Components AWT, Swing, JavaFX & SWT 3
E Dynamische JComboBox AWT, Swing, JavaFX & SWT 3
F dynamische Ausgabe eines extenen Programms umleiten AWT, Swing, JavaFX & SWT 6
F Dynamische Swing Elemente AWT, Swing, JavaFX & SWT 10
G Dynamische JMenuBar AWT, Swing, JavaFX & SWT 2
T Dynamische Anpassung einer jCheckBox AWT, Swing, JavaFX & SWT 11
O Bindings, dynamische Verbindung (Vorbau mit Netbeans) AWT, Swing, JavaFX & SWT 10
G Dynamische Menüs mit Liste von MRU Dateien AWT, Swing, JavaFX & SWT 2
X Dynamische linien (Position und Länge) AWT, Swing, JavaFX & SWT 4
L Dynamische Buttons erstellt, aber wie ein Event zuweisen? AWT, Swing, JavaFX & SWT 11
T dynamische anzeige? AWT, Swing, JavaFX & SWT 4
S Dynamische Ausgabe im JTextField AWT, Swing, JavaFX & SWT 7
K dynamische jlabels AWT, Swing, JavaFX & SWT 21
M dynamische Grafik in JFrame einbetten AWT, Swing, JavaFX & SWT 2
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
G JTextField & Dynamische Grössenänderung? AWT, Swing, JavaFX & SWT 8
K TableLayout - dynamische Elemente zu spät ge-updated AWT, Swing, JavaFX & SWT 3
O Dynamische Checkboxen AWT, Swing, JavaFX & SWT 21
T Dynamische GUI's AWT, Swing, JavaFX & SWT 10
T Dynamische Look&Feels AWT, Swing, JavaFX & SWT 4
K dynamische Bilder laden AWT, Swing, JavaFX & SWT 5
N mehrere JComboBoxes AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben