# JCombobox mit Daten aus DB füllen



## eys (3. Mrz 2010)

Hallo Leute,

wie im Titel beschrieben geht es mir darum eine Combobox mit Dozentennamen, die in einer Datenbank-Tabelle stehen, zu füllen. 
Info: Ich arbeite mit einer 3-geteilten Architektur (GUI, Anwendung, Persistenz). IDE ist Netbeans.

Hab noch die Ausgabe in Anhang gepackt. Ich bekomme zwar 9 Datensätze in meine Box aber das sieht mehr nach einer ID aus und was ich bräuchte wären die konkreten Dozentennamen in diesem Fall.
Wär super wenn jemand kurz weiterhelfen könnte :rtfm:

Also zuerst lese ich die Namen aus:

```
protected Object makeObject2(ResultSet rs) throws SQLException {
        Kurse k = new Kurse();
        k.setDozentenName(rs.getString(1));

        return k;
 }
// Alle Dozentennamen holen
	public Vector getList2() throws DataException {
	        try {
			String sql = "select dozenten.dozentenName from dozenten";
                        Vector result = query2(sql);
                
			return result;
		}
		catch (Exception e) {
			throw new DataException(e.getMessage());
		}
	}
```

dann gehen die Daten in die Klasse Manager:

```
public Vector getList2() throws DataException {
		return KurseBroker.getInstance().getList2();
	}
```
zum Schluss sollte das alles in der GUI angezeigt werden:

```
//---------- Combobox
                dropDown = new JComboBox();
                try{
                    Vector v = manager.getList2();
                    int size = v.size();

                    for (int i = 0; i < size; i++) {                        
                        dropDown.addItem(v.elementAt(i));                        
                    }                    
                }
                catch(DataException ex){
                    JOptionPane.showMessageDialog(frame,ex.getMessage(),"Fehler", JOptionPane.ERROR_MESSAGE);
                }
```


----------



## eRaaaa (3. Mrz 2010)

entweder du baust dir dein eigenes Model für die ComboBox und kannst somit selbst bestimmen was angezeigt wird, oder du überschreibst einfach mal in deiner Kurse-Klasse die toString-Methode...oder am Besten du machst beides 

Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 10.2 Object ist die Mutter aller Klassen


----------



## eys (3. Mrz 2010)

Könntest du mir konkret sagen wie ich in meinem Beispiel das Model bauen müsste? Ist leider meine erste Combobox..
Und wegen "toString()" da versteh ich nicht wie es gemeint ist. Ich benutze an der einen Stelle die getString() aber was ändern? 
:bahnhof:


----------



## eRaaaa (3. Mrz 2010)

eys hat gesagt.:


> Und wegen "toString()" da versteh ich nicht wie es gemeint ist. Ich benutze an der einen Stelle die getString() aber was ändern?
> :bahnhof:



Das Model das im Moment gesetzt ist, ruft immer die toString deines Objektes auf..und da du die aus der Oberklasse Object erbst, kommen da halt so komische Zeichen zu stande..du musst also in deine Klasse die toString ÜBERSCHREIBEN! ...du solltest dir mal den Link anschauen(oder besser ist: lesen) den ich oben schon gepostet habe


----------



## eys (3. Mrz 2010)

Ok die toString() verursacht diese seltsamen Werte. Soweit is jetzt klar. Weiß auch wo ich sie hinsetze aber was mir nicht klar ist, was muss ich übergeben damit jetzt statt hexCode den konkreten Namen bekomme?


```
public String toString(){
    return ??;
}
```


----------



## eRaaaa (3. Mrz 2010)

Woher sollen wir das wissen? Wir kennen ja deine Kurse-Klasse nicht...du musst halt irgendein String zurückgeben den du anzeigen willst...

z.B.

return this.kursName + " " +this.dozentName;

.....:noe:


----------



## eys (4. Mrz 2010)

Habe das Problem jetzt gelöst. Dabei hat weder toString() noch das Model geholfen.
Musste in der Schleife nen Cast machen und dann direkt meine Kurse Methode übergeben. :idea:


```
for (int i = 0; i < size; i++) {
                         Kurse k = (Kurse) v.elementAt(i);
                         dropDown.addItem(k.getDozentenName());
                    }
```


----------



## eRaaaa (4. Mrz 2010)

Wir schreiben uns dann noch mal wenn du versuchst die Daten aus der Box auszulesen und damit zu arbeiten 
Dann wirst du dich nämlich wundern, wieso du auf dem Item/*String* kein getDozentenName() o.ä. aufrufen kannst 
Aber vllt brauchst du das ja auch nicht, man wird sehen ^^


----------



## eys (4. Mrz 2010)

Also echt ihr seid ja nett hier ueh: Wenn man denkt man is weiter kommt gleich der nächste Hammer 
Aber ich schätze ohne hier seitenweise meinen Code zu posten (was sich vermutlich keiner durchlesen will) wird mir keiner so direkt helfen können wie ich es bräuchte. Naja is noch kein Meister vom Himmel gefallen.


----------



## eRaaaa (4. Mrz 2010)

[DUKE]Was ist jetzt dein Problem??[/DUKE]


----------

