# JComboBox.getSelectedIndex() liefer immer 0 als Wert zurück?



## Djon (20. Apr 2005)

Hallo!!!

Ich habe hier ein kleines Problem! Ich habe vor mir einen kleinen TerminPlaner zu bauen. Habe die GUI schon fertig, doch ich kommen an JComboBox nicht weiter. In der JComboBox stehen meine Fächer (als Vector oder ein Stringfeld). Wenn ich jetzt was aus der JComboBox auswähle und mit JComboBox.getSelectedIndex() mir den gewählten Index geben lasse, bekomme ich immer die 0 als Wert zurück und das egal was ich auswähle!!! Wer kann mir da weiter helfen? Wie kriege ich den richtigen Index raus?


Mfg Djon


----------



## Snape (20. Apr 2005)

Moin,
leg Dir Objekte da rein und lies dann das selectedItem aus. Dann hast Du auch gleich das benötigte Objekt im Zugriff.


----------



## Djon (20. Apr 2005)

Das habe ich mir auch schon überlegt, doch es muss doch mit dem Index auch gehen, oder nicht?!?

Mfg Djon


----------



## Snape (20. Apr 2005)

Jo, offenbar machst Du da etwas falsch.


----------



## Djon (20. Apr 2005)

Das ist mir auch klar, sonst hätte ich wohl die Frage hier nicht reingestellt 

Mfg Djon


----------



## AlArenal (20. Apr 2005)

Da wir aber nicht per Fernweartung auf deinen Rechner können, um uns deinen Code zu sauegen und wir auch keine direkten Nachkommen von Nostradamus sind, ist es um unsere ferndiagnostischen Fähigkeiten gerade nicht so gut bestellt 

Sprich: Nix Code, nix Lösung


----------



## Djon (20. Apr 2005)

kommt sofort 



```
String Feld = {"Computational Intelligence", "TeamProject", "Künstliche Intelligenz", "Rechennetze"};
          JComboBox box = new JComboBox(Feld);
```

jetzt will ich in einer Methode abfragen, was von dem Benutzer ausgewählt wurde


```
public void BnLinks_Click(){
            int wahl = box.getSelectedIndex();
            System.out.println(wahl);
          }
```

und dabei kriege ich immer 0 als Wert ausgegeben


----------



## Snape (20. Apr 2005)

Mal eine einfache Frage:
Weist Du der ComboBox einen ActionListener zu, in dem dann BnLinks_Click() aufgerufen wird?


----------



## Djon (20. Apr 2005)

nein, der ComboBox ist kein ActionListener zugewiesen.  BnLinks_Click() kommt vom Button

mfg Djon


----------



## Snape (20. Apr 2005)

Ach ich red auch schon dummes Zeug. Also das Beispiel unten funktioniert einwandfrei. Übrigens machst Du mit dem String Unsinn und es sollte

String[] Feld = {"Computational Intelligence", "TeamProject", "Künstliche Intelligenz", "Rechennetze"};

lauten.

Dieses Minimalbeispiel funzelt jedenfalls:

```
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class SeparatorPanel extends JFrame
{
  JComboBox cboTest = new JComboBox();
  JButton jbAuslesen = new JButton("Combobox Wert auslesen");
  JLabel jlSelectedIndex = new JLabel("");
  JLabel jlSelectedItem = new JLabel("");
  
  public SeparatorPanel()
  {
    super("blablabla");
    this.getContentPane().setLayout(new GridLayout(2, 2));

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setResizable(false);
    
    initGUI();
    
    setSize(400, 400);
    this.setVisible(true);

    this.pack();
  }

  private void initGUI()
  {
    getContentPane().add(cboTest);
    getContentPane().add(jbAuslesen);
    getContentPane().add(jlSelectedIndex);
	getContentPane().add(jlSelectedItem);
    cboTest.addItem("Hund");
    cboTest.addItem("Katze");
    cboTest.addItem("Maus");
    
    jbAuslesen.addActionListener(new ActionListener()
         {
      		public void actionPerformed(ActionEvent event)
      		{
      		  setLabelText();
      		}
         });
  }

  private void setLabelText()
  {
    int iSelectedIndex = cboTest.getSelectedIndex();
    String sSelectedItem = (String)cboTest.getSelectedItem();
    jlSelectedIndex.setText("Index: " + iSelectedIndex );
    jlSelectedItem.setText("SelectedItem: " + sSelectedItem);
  }

  // ///////////////////////////////////////////////////////////
  public static void main(String[] args)
  {
    SeparatorPanel Sepp = new SeparatorPanel();
  }
}
```


----------



## Djon (20. Apr 2005)

habe ich übersehen 

Danke, werde heute ausprobieren!

mfg Djon


----------



## Taste (19. Apr 2006)

Hallo, ich hänge mich einfach mal an diesen Thread dran, denn leider stehe ich vor dem gleichen Problemchen und finde den Fehler einfach nicht.

Ich habe eine Methode:

```
public void showLevel(){
		
		jComboBox[level] = new JComboBox(); 
	    jComboBox[level].setBounds(new java.awt.Rectangle(20,20+(level-1)*40,480,25)); 
	    jComboBox[level].setBackground(java.awt.SystemColor.white); 
	    jPanelEast.add(jComboBox[level]);
	    
	    jButtonNew[level] = new JButton(); 
	    jButtonNew[level].setBounds(new java.awt.Rectangle(505,20+(level-1)*40,60,25)); 
	    jButtonNew[level].setBackground(new java.awt.Color(150,150,200));
	    jButtonNew[level].setText("Neu");
	    jPanelEast.add(jButtonNew[level]);
	    
	    jButtonDelete[level] = new JButton(); 
	    jButtonDelete[level].setBounds(new java.awt.Rectangle(570,20+(level-1)*40,60,25)); 
	    jButtonDelete[level].setBackground(new java.awt.Color(150,150,200));
	    jButtonDelete[level].setText("Löschen");
	    jPanelEast.add(jButtonDelete[level]);
	    
		Derby derby = new Derby();
		derby.connect();
		/* Syntax für showLevel: (Level des Parents, Id des Parents, Userlevel) */
		derby.showLevel(level , parentId, 0);
		derby.disconnect();
		
	    if (level == 1){
	    	category = "";
	    	jComboBox[level].addItem("Produkte");
	    } else {
	    	jComboBox[level].addItem(category);
	      }
	    
//	    category = ((ListeLevel)derby.liste.get(0)).getNext_category_german();
	    
      for (int i=0; i<(derby.liste.size()); i++) { 
	    //for (int i=0; i<2; i++) { 
            jComboBox[level].addItem(((ListeLevel)derby.liste.get(i)).getKeyword_german()); 
         }
        
        jComboBox[level].addItemListener(this);
	    
		jPanelEast.validate();
		jPanelEast.repaint();
	}
```
Mit dazugehörigem ItemListener:	

```
public void itemStateChanged(ItemEvent e) {
		if (e.getStateChange() == ItemEvent.SELECTED){
			showLevel();
			System.out.println("Level: " + level);
			System.out.println("Index: " + jComboBox[level].getSelectedIndex());
			System.out.println("Item: " + jComboBox[level].getSelectedItem());
			parentId=jComboBox[level].getSelectedIndex();
			level++;
		}
	}
```
Wenn ich die Applikation laufen lasse, habe ich neben dem String Produkte drei weitere Itemes in der ersten Combobox stehen. Wenn ich nun etwas auswähle bekomme ich durch den Listener jedesmal Index=0 und Item="" ausgegeben. 

Was mache ich verkehrt?

Gruß Nico


----------

