Defaultwert im JComboBox setzen ....

vfl_freak

Premium-User
Hallo zusammen,

habe ein kleines Problem mit eine ComboBox.

Ich deklariere eine ComboBox und lese die releveanten Werte aus einer DB ein.
Dies ergibt ein byte-Array, in dem die Werte in folgender Sequenz vorliegen
// n-mal <DB-Key|Bezeichner|...>

Dann durchlaufe ich das byte-Array mit einer for-Schleife, wobei der Bezeichner ausgelesen und der ComboBox hinzugefügt wird
Java:
JComboBox cbTextAuswahl = new JComboBox( );
...
for( ... )
{
    String sBez = ...;
    cbTextAuswahl.addItem( sBez );
}

Soweit, sogut :-)
Im Auswahlfenster der ComboBox sehe ich jetzt alle Bezeichner in der Reihenfolge, wie sie aus der DB ausgelesen wurden!
Nun möchte einen bestimmten dieser Strings als Default-Wert vorblenden. Dazu vergleiche ich in jedem Durchlauf der for-Schleife den jeweiligen Bezeichner mit einem bestimmten Wert an anderer Stelle im Programm und merke ihn mir, wenn er übereinstimmt (String sTMP).
Da dieser Wert nur genau einmal vorkommen kann, steht auch nach der Schleife auf sTMP der gesuchte Wert

Nur mein Versuch, den Defaultwert mit
Java:
cbTextAuswahl.setSelectedItem( sTMP );
zu setzen schlägt fehl (übrigens auch die Angabe eines Index per int-Wert)!
Angezeigt wird weiterhin der erste ausgelesene Bezeichner .... :-(

Was mache ich hier falsch :confused:

Danke im voraus !
Gruß
Klaus
 
Ah ... Problem gelöst :p

Es geht nicht über einen Bezeichner-String, sondern nur über einen Index-Wert, den ich mir jetzt anstelle des Strings merke!

Allerdings heißt die passende Methode
Code:
cbTextAuswahl.setSelectedIndex( iIndex );
und nicht setSelectedItem .....

Gruß
Klaus
 
Hallo Klaus,

eigentlich sollte es mit setSelectedItem(Object anObject) genauso gut gehen. Was man dabei beachten muss: es wird hier ein Item-Object erwartet, nicht unbedingt der String, der das Item repräsentiert. Aber in deinem Beispiel fügst du ja auch nur Strings in die ComboBox ein, daher sollte dein ursprünglicher Ansatz auch klappen. Vielleicht ist irgendwo ein logischer Fehler, den du bis jetzt übersehen hast. Offenbar scheitert es an der equals()-Methode beim Vergleich von ComboBox-Items und dem zu selektierenden Item.

Grüße
Vincent
 
Hallo Vincent,

erstmal Danke Für die Antwort!

Offenbar scheitert es an der equals()-Methode beim Vergleich von ComboBox-Items und dem zu selektierenden Item.

Ja, das war auch erst eine meiner Vermutungen, ich habe es aber im Debugger getestet und sie waren eindeutig gleich ('.trim' sein Dank!).
Habe dann das Ergebnis auch mal auf eine bool'sche Variable geschrieben und das "setSelectedItem(Object anObject)" wurde auch nur wirklich bei Gleichheit aufgerufen.
Keine Ahnung, warum es keinen Effekt erzielte.

Na ja, hab's - wie gesagt - auf den Integer umgebaut und es geht wie geschnitten Brot :p

tschüss
Klaus
 
Zurück