# JComboBox Item auswählen



## Bergen (25. Feb 2007)

hallo,
ich hab eine jcombobox in der mehrere werte drin stehen. nun wird ja standaartmäßig der oberste eintrag auch als erstes sichtbar gemacht. ich möchte aber gern einen anderen; standartmäßig sichtbar haben. ich dachte vielleicht würde es mit setSelectedItem() gehen; funktioniert aber nicht.
kann mir bitte jemand weiterhelfen, wie ich mein problem lösen könnte.

danke!


----------



## Chris_1980 (25. Feb 2007)

An für sich klappt das einwandfrei mit setSelectedItem.

Ich nehm mal an du machst so was:

```
myComboBox.addItem("Sahne");
myComboBox.addItem("Kirsche");
myComboBox.addItem("Erdbeer");

myComboBox.setSelectedItem("Kirsche");
```

Das funktioniert nicht, weil das Object "Kirsche" was du addest nicht das Object "Kirsche" ist was du auswählen willst.
Es ist zwar gleich, aber halt nicht das Selbe.  :wink: 

Damit das funzt mußt due das so in der Art machen:


```
String s="Sahne", k="Kirsche", e="Erdbeer";

myComboBox.addItem(s);
myComboBox.addItem(k);
myComboBox.addItem(e);

myComboBox.setSelectedItem(k);
```


MFG, Chris


----------



## Bergen (25. Feb 2007)

nein so mach ich es nicht.
ich lade aus einer datenbank meine verschiedenen items und übergebe sie als vektor dem konstruktor von JComboBox()

also so in etwa:

```
JComboBox combo =  new JComboBox(load());

public Vector load(){
  ResultSet r = stmt.executeQuery("SELECT * FROM " + items+" ORDER BY ID");
   while(r.next()) vec.add(r.getString(1));
  return vec;
```


----------



## Chris_1980 (25. Feb 2007)

Gut. Dann solltest du dir ne Refferenz auf den Vector behalten. Sonst ists wohl wieder das selbe Spiel.



```
Vektor v = load();
JComboBox combo =  new JComboBox(v); 

combo.setSelectedItem( v.get(DerIndexVonDeinemGewünschtenItem) );

public Vector load(){ 
  ResultSet r = stmt.executeQuery("SELECT * FROM " + items+" ORDER BY ID"); 
   while(r.next()) vec.add(r.getString(1)); 
  return vec;
```

Oder ohne Ref eben so:

```
JComboBox combo =  new JComboBox(load()); 

combo.setSelectedIndex( DerIndexVonDeinemGewünschtenItem );

public Vector load(){ 
  ResultSet r = stmt.executeQuery("SELECT * FROM " + items+" ORDER BY ID"); 
   while(r.next()) vec.add(r.getString(1)); 
  return vec;
```

Beides funktioniert. Falls es bei dir wider Erwarten nicht funzen sollte mußt du wohl mal was mehr code posten.


----------



## Guest (25. Feb 2007)

danke das funktioniert soweit.
ich hab mich wahrscheinlich nicht ganz klar ausgedrückt, ich möchte die andere setSelectedItem(Object ob) verwenden, die nen string bzw. object als eingabe parameter bekommt  (ja das geht wirklich nicht aus meienr beschreibung hervor, sorry).
dann hab ichs mit der getIndexOf(Object ob) versucht die liefert mir aber immer nur -1 zurück obwohl der string auf jeden fall im vektor drin ist.


----------



## Marco13 (25. Feb 2007)

Chris_1980 hat gesagt.:
			
		

> Das funktioniert nicht, weil das Object "Kirsche" was du addest nicht das Object "Kirsche" ist was du auswählen willst.
> Es ist zwar gleich, aber halt nicht das Selbe.  :wink:


Ich bin mir ziemlich sicher, dass das Objekt in diesem Fall sogar dasSELBE ist (Java String Pool). Und ich bin mir ziemlich sicher, dass es garnicht mal dasselbe sein muß, sondern nur das gleiche, weil die Objekte in der ComboBox mit "equals" auf Gleichheit mit dem übegebenen Objekt geprüft werden. (Bin aber gerade zu faul, nachzusehen).

@Bergen: IST die Frage jetzt beantwortet oder nicht  :?


----------



## Chris_1980 (25. Feb 2007)

Marco13 hat gesagt.:
			
		

> Chris_1980 hat gesagt.:
> 
> 
> 
> ...



nö, das funzt nicht lieber Marco. Hab´s ausprobiert.  :wink:


----------



## Roar (25. Feb 2007)

Chris_1980 hat gesagt.:
			
		

> Marco13 hat gesagt.:
> 
> 
> 
> ...


doch das geht


----------



## Chris_1980 (25. Feb 2007)

Nein tut´s nicht.  :noe: 
Und da ich den JavaEditor noch immer offen hatte könnt ihr euch ja selbst davon überzeugen :bae: 


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;


public class jfz extends JFrame {
  // Anfang Variablen
  private String[] jComboBox1Daten = {"Sahne", "Teig", "Kacke", "Leber", "Kirschen", "Zeugs", "Autos", "Pizza (jam jam)"};
  private JComboBox jComboBox1;
  // Ende Variablen

  public jfz(String title) {
    // Frame-Initialisierung
    super(title);

    jComboBox1 = new JComboBox(jComboBox1Daten);
    
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });
    int frameWidth = 300;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    jComboBox1.setBounds(128, 80, 145, 24);

    cp.add(jComboBox1);



// Die interessante Zeile :-p...    
    jComboBox1.setSelectedItem("Kirsche");



    // Ende Komponenten

    setResizable(false);
    setVisible(true);
    String s = Character.toString('c');
    System.out.println(s);

  }

  // Anfang Ereignisprozeduren
  // Ende Ereignisprozeduren

  public static void main(String[] args) {
    new jfz("jfz");
  }
}
```

Na? Hat er Kirsche ausgewählt?! :roll: 


PS: Diesen schrecklichen Code schreibt der JavaEditor selber, wenn man dieses GUI Dings benutzt. Zum ausprobieren jedoch ganz praktisch.


----------



## Illuvatar (25. Feb 2007)

Äh nein er wählt Kirsche nicht aus... Und jetzt schau dir die JComboBox mal gaaanz genau an, und du findest den Grund.

PS: Zeilen 48 und 49 sin auch sehr sinnvoll, ne? *g
Edit @Roar: Ups da war ich noch nicht - ich les die Foren doch von unten nach oben


----------



## Roar (25. Feb 2007)

Chris_1980 hat gesagt.:
			
		

> ...





			
				Illuvatar hat gesagt.:
			
		

> Äh nein er wählt Kirsche nicht aus... Und jetzt schau dir die JComboBox mal gaaanz genau an, und du findest den Grund.


lol, jo :roll:



> PS: Zeilen 48 und 49 sin auch sehr sinnvoll, ne? *g


 http://www.java-forum.org/de/topic45069_character-string-wandeln.html :roll:


----------



## Chris_1980 (25. Feb 2007)

wie sehr Peinlich!  :lol: :applaus:  OK, ihr habt gewonnen, ich senke mein Haupt in Scham vor euch!!!   

Was ich jetzt aber dann garnicht verstehe... wieso hatte er denn dann überhaupt ein Problem?  :bahnhof:


----------

