# ComboBox selectedItem setzen



## FenchelT (18. Feb 2008)

HAllo zusammen,

ich bin heute mal wieder zu blond.

Ich habe eine ComboBox fuer bestimmte Typen die ich mit Daten aus einer DB-Tabelle befuelle. 


```
Beipsiel Tabelle:
id,        wert
1000       Apotheke
1500       Drogeriemarkt
1859       Krankenhaus
usw
```

Dabei hat jeder Eintrag eine ID und einen Wert
Dafuer habe ich eine eigene KLasse Combobox-Item


```
public class ComboBoxItem extends Object
{
	private int iValue; 
	private String sDisplay;
	
	public ComboBoxItem( int value, String display )
	{
		iValue = value;
		sDisplay = display;
	}
	
	
	public int getValue()
	{
		return iValue;
	}
	
	
	public String toString()
	{
		return sDisplay;
	}
}
```


Ich iteriere nun ueber das RecordSet(rs) und fuelle die die Combobox mittels

this.gui.getComboBox().addItem(rs.getInt("id"), rs.getString("wert));



Nun lade ich einen DAtensatz aus einer anderen Tabelle dessen Tabellen Struktur wie folgt aussieht:

```
Name1,     Name2,       Str,             Plz,       Ort,                Typ,      Datum usw
Ich        AG           Erpelstrasse     88888      Entenhausen         1859        heute
```


Diesen Datensatz habe ich in einem Java-Objekt stehen und uebergebe ihn so an die GUI.
Wie kann ich nun anhand des Typs im Java-Objekt den Typ in Combobox Gui vorbelegen?



Vielen Dank


----------



## The_S (18. Feb 2008)

FenchelT hat gesagt.:
			
		

> Wie kann ich nun anhand des Typs im Java-Objekt den Typ in Combobox Gui vorbelegen?



Fränkisches Fragewort mit zwei Buchstaben: HÄ? Willst du der ComboBox sagen, dass sie das Element mit der ID in deinem Objekt selektieren soll?


----------



## FenchelT (18. Feb 2008)

Hallo Hobbit,

ich sehe schon, die Franken verstehen mich  :wink: 
Ja, genau das will ich


----------



## The_S (18. Feb 2008)

Und der Wert kann unterschiedlich sein!? Warum erstellst du dir nicht eine eigene Klasse, die ID und Wert aus deiner 1. Abfrage speichert. In dieser Klasse überschreibst du dann die toString Methode und gibst in dieser deinen Wert zurück. Anschließend addest du nicht den Wert, sondern das komplette Objekt zur ComboBox. Damit sollte es jetzt nicht mehr alzu schwer sein das gewollte element zu selektieren.


----------



## FenchelT (18. Feb 2008)

Rheinisches Fragewort ohne W:  Hä?  :wink: 

Entweder verstehe ich Dich nicht richtig, oder ich habe mich nicht richtig ausgedrueckt. Nochmal zum besseren Verstaendnis

Ich habe einen Datensatz den ich in einer GUI anzeigen lasse.

Der Datensatz beinhaltet die ID eines Einrichtungstypen.
Diese ID referenziert auf eine Einrichtungstypentabelle in der DB.

In der GUI gibt es eine Combobox, welche mit allen Werten aus der Einrichtungstypentabelle befuellt sein soll, damit der User die Moeglichkeit hat, 
den Eintrag der Combobox zu ändern und ggfls abzuspeichern.


Ich moechte aber, dass die Voreinstellung der Combobox den Wert anzeigt, der sich hinter der Einrichtungstypen-ID im Stammdatensatz verbirgt.

Du schreibst nun:

.....Anschließend addest du nicht den Wert, sondern das komplette Objekt zur ComboBox

Ich adde doch jedes Mal ein komplettes Objekt mittels  .addItem(new ComboxItem(id, value));

Ich kann ja auch ohne weiteres mittels 

((ComboBoxItem) this.gui.getCboTyp().getSelectedItem()).getValue();
((ComboBoxItem) this.todo.getCboPrio().getSelectedItem()).toString();

sowohl die ID als auch den Wert abfragen, den der USer ausgewaehlt hat.

Ich werde mir ueber Deine Antwort aber nochmal Gedanken machen.
Solltest Du heute nichts mehr von mir hoeren ist das nicht persoenlich gemeint, ich fliege gleich noch fuer zwei Tage in die Schweiz.

Danke Dir nochmals fuer Deine Hilfe


----------



## The_S (18. Feb 2008)

ach ... das ComboBoxItem habe ich ganz übersehen ???:L . Kommt davon wenn man zu schnell liest. Da das jetzt auch mein letzter Post hier ist, les ich mir dein Problem dann morgen nochmal GENAUER durch  .


----------



## The_S (22. Feb 2008)

Oh verdammt ... hab dich ganz vergessen, nur jetzt gerade deinen Beitrag wieder gesehen :x . Werd vermutlich des WE auch net dazu kommen ... sorry  !


----------



## FenchelT (22. Feb 2008)

Kein Problem, mach  Dir mal keinen Stress. Ein entspanntes WE  :wink:


----------



## The_S (25. Feb 2008)

```
for (int i = 0; i < combobox.getItemCount(); i++) {
   if (((ComboBoxItem)combobox.getItemAt(i))).getId() == datensatz.getId()) {
      combobox.setSelectedIndex(i);
      break;
   }
}
```

Oder hab ich jetzt schon wieder was falsch verstanden? Weil irgendwie erscheint mir das zu einfach  .


----------



## FenchelT (25. Feb 2008)

Moin Hobbit,

7.07h; Respekt   

Das ganze mit einer Schleife zu durchlaufen ist eine gute und funktionierende Idee.
Ich hatte zwar gehofft, dass ein Direktzugriff auf das Elemnt moeglich ist, aber bei lediglich 20 Eintraegen in der 
Combobox ist das mit der Schleife zeitlich auch noch akzeptabel  :wink: 


Vielen Dank nochmal fuer DEine Muehe  :toll:


----------



## The_S (25. Feb 2008)

Evtl. könntest du die equals-Methode deines ComboBoxItems so anpassen, dass es auch Objekte deiner Datensatz-Klasse mit der selben id als identisch ansieht und dann mit combobox.setSelectedItem(datensatz) das korrekte Objekt setzen. Ist jetzt aber ungetestet und nur so ins Blaue geraten (kA wie JComboBox das intern handhabt).


----------

