# java.lang.StackOverflowError



## tl23 (15. Jun 2004)

hallo,

ich habe eine gui mit einigen componenten, unter anderem mit einer JComboBox. die comboBox ist instanzvariable.
wenn ich nun im konstruktor die auswahl über
this.comboBox.setSelectedItem("ein String"); - wobei "ein String" ein parameter des konstruktors ist -
setzten möchte, so erhalte ich einen java.lang.StackOverflowError. Ausserdem meldet der "Java Virtual Machine Launcher": "Fatal exception occurred. Program will exit."

wenn ich im konstruktor jedoch den eintrag
//this.comboBox.setSelectedItem("ein String"); 
auskommentiere, funktioniert alles einwandfrei, ausser das die comboBox die falsche auswahl anzeigt.

kann mir jemand die fehlerursache nennen? ich wäre sehr dankbar.

Thomas


----------



## Illuvatar (15. Jun 2004)

StackOwerflowError bedeutet:


			
				Roar hat gesagt.:
			
		

> Wird geworfen wenn der Stack "überläuft". Das ist meistens der Fall, wenn eine Methode rekursiv aufgerufen wird,
> aber keine Endbedingung existiert.


Kann es sein, dass du aus der Methode setSelectedItem wieder zur selben Programmstelle kommst, d. h. z. B. mit einem ItemListener???


----------



## Guest (16. Jun 2004)

Illuvatar hat gesagt.:
			
		

> StackOwerflowError bedeutet:
> 
> 
> 
> ...



oh ja, tatsächlich. danke sehr, dass hilft mir schon weiter.
wie kann ich aber nun den eintrag in der comboBox setzten?


----------



## Illuvatar (16. Jun 2004)

Ich gehe jetzt mal davon aus, dass das tatsächlich in einem ItemListener passiert, der ja dann gekürzt so aussieht:

```
combobox.addItemListener (new ItemListener()
{
  public void itemStateChanged()
  {
    combobox.setSelectedItem ("string");
  }
}
```
Dieser Code verursacht jedenfalls einen StackOverflow.
Dann kannst du ja einfach schreiben:

```
combobox.addItemListener (new ItemListener()
{
  public void itemStateChanged()
  {
    combobox.removeItemListener (this);
    combobox.setSelectedItem ("string");
    combobox.addItemListener (this);
  }
}
```
So wirds das einfachste sein.


----------



## Guest (17. Jun 2004)

oh wow. das passt perfekt.
danke, ich wusste nicht ,dass es die remove-methode gibt.


----------

