# JComboBox Ausgabe in String speichern



## RunOrVeith (26. Jan 2011)

Hallo,
ich versuche gerade, einen Teil einer Datenbankanbindung für die Schule zu schreiben.
Ich mache dabei mehr oder weniger  nur das visuelle, aber auch ein wenig der SQL syntax, kann aber noch nicht auf die anbindung an die Tabelle zurückgreifen.

Ich habe 2 Probleme (wobei mir bewusst ist, dass das zweite eher in eine andere Kategorie dieses Forums passt, ich wollte aber nicht 2 Threats eröffnen)


1. Wie bekomme ich die Ausgabe in einer JComboBox in eine Variable gespeichert, die dannach ausgegeben werden kann?

Bis jetzt habe ich dies:
dropdowneingabe ist eine String Variable

```
DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel();
        comboBoxModel.addElement("Eintrag 1");
        comboBoxModel.addElement("Eintrag 2");
        comboBoxModel.addElement("Eintrag 3");
        comboBoxModel.addElement("Eintrag 4");
        JComboBox spaltenname = new JComboBox(comboBoxModel);
        dropdowneingabe = spaltenname.getSelectedItem();
        add(spaltenname);
```

Es meldet mir, dass ich kein Objekt zu einem String umformatieren kann. Ich vestehe, wo das Problem liegt, aber nicht wie ich es reparieren soll.


Und  zweitens würde ich gerne wissen, wie ich die Namen von den Spalten einer Tabelle bekomme, ich ich dann als einträge in die Combobox speicher kann, ohne die Anbindung an die Datenbank zu haben, bisher. Nur so, dass es die Namen gleich ausliest, wenn es angebunden ist. Es wäre auch hilfreich zu wissen, wie ich den Tabellennamen auslesen kann.

Vielen, vielen Dank
Veith


----------



## Attila (26. Jan 2011)

```
spaltenname.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e) {
       JComboBox cb = (JComboBox)e.getSource();
       dropdowneingabe = (String)cb.getSelectedItem();
   }
});
```

Gruß Attila


----------



## André Uhres (26. Jan 2011)

Hallo Veith,

1. Jede Klasse sollte Object#toString überschreiben, dann braucht man immer nur toString aufzurufen um ein Objekt als String darzustellen.
2. Folgende SQL Befehle können helfen:

```
private String sqlSelectTables = "Select name from sysobjects "
            + "where type = 'U' order by name";
    private String sqlSelectColumns = "select  name from dbo.SYSCOLUMNS "
            + "where id=(select id from SYSOBJECTS where "
            + "type='U' and "
            + "name='TABLE_NAME') order by colid";
```

Gruß,
André


----------



## RunOrVeith (28. Jan 2011)

Ok, also Atilla, deine Antwort funktioniert perfekt, danke.

André, deine hat mich auch sehr geholfen, jetzt würde ich nur noch gerne wissen, wie ich die Ausgabe der Spaltenauslese dann in die Wahlmöglichkeiten der ComboBox bekomme, denn so wie ich es sehe, bekomme ich so eine String mit allen Namen, die ich dann nicht einzeln in die einträge schreiben kann.
Was ich mir dachte, ist, dass man die Leerzeichen zähln könnte, und dann alles immer vor dem nächsten in einen String speicher, allerdings wäre das relativ aufwändig, also gibt es da eine einfachere Möglichkeit, oder muss man es so  machen?

Außerdem noch eine Frage:
Gibt es eine Möglichkeit, der ComboBox zu sagen, sie soll so viele Auswahlmöglichkeiten erstellen, wie es Spaltennamen gib?
Edit:
Ich habe es so versucht, wie ich oben gesagt habe: Leerzeichen zählen und dann 
so lange Einträge in die Box tun, bis es gleichviele Einträge wie Leerzeichen gibt,
allerdings erscheint nun immer eine leere Box.


```
spaltenanzahl();
        DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel();
        while (eintragsnummer<=count)
        {
        	comboBoxModel.addElement("Eintrag" + eintragsnummer);
        	eintragsnummer = eintragsnummer +1;
        }






public int spaltenanzahl() 
//Liest die Zahl der Leerzeichen im String der
//Spaltennamen aus, um herauszufinden, wie viele Spalten es sind.
	{
		
		int count = spaltennamen.split("\\ ",-1).length-1;
		System.out.println(count);
		return count;
	}
```


Vielen Dank!


----------

