# Alle Komponenten eines JPanels durchlaufen



## Guest (3. Sep 2008)

Hallo,

habe auf einem JPanel 6 ComboBoxen und 2 JButtons

nun möchte ich überprüfen, ob in allen 6 ComboBoxen auch was drin steht.
Da ich nicht jede einzeln überprüfen möchte (also Codemäßig) deshalb Frage:

Gibts ne Möglichkeit (Schleife) mit welcher ich alle Komponenten eines JPanels durchlaufe und wenn es eine JComboBox ist diese dann auf Eingabe überprüft?

danke
christoph


----------



## Verjigorm (3. Sep 2008)

```
for(Component c : panel.getComponents())
		{
			if(c instanceof JComboBox)
			{
				((JComboBox)c).setBackground(Color.RED); //c auf JCombobox casten
                                //oder JComboBox box = (JComboBox)c;
                                //box.setBackground(Color.RED);
			}
		}
```


----------



## Guest (3. Sep 2008)

..erstmal danke...

Problem nur, dass bei mir die Schleifenart nicht anerkannt wird:
'java for each statements are only available if source level is 5.0'

-> gibts ne andere Schleifenart zum durchlaufen?

danke
christoph


----------



## SlaterB (3. Sep 2008)

du kennst keine Schleifenart für deine Version, um eine Liste/ Collection/ in diesem Fall ein Array zu durchlaufen?

oje, aber gibt ja Lehrbücher zu Listen/ Collection/ Arrays


----------



## Guest (3. Sep 2008)

danke für diese Antwort die hat mir seeeeeehr weiter geholfen....
gibt halt leider auch Anfänger/dumme Menschen (so wie ich) auf dieser Welt...

Anscheinend hast Du niemals mit irgendwas angefangen sondern bist gleich mit viel Wissen auf die Welt gekommen und scheinst alles zu wissen und das auch gerne andere wissen zu lassen...fetter respekt der Herr hoffe Du hattest bei dieser Antwort ein erhebendes Gefühl in Dir verspürt....


----------



## SlaterB (3. Sep 2008)

zumindest hatte ich das viele Monate schon beherrscht, bevor ich sowas kompliziertes wie eine Component angefasst habe,
darüber solltest du mal nachdenken,
aber sich beschweren ist ja einfacher


----------



## Gast (3. Sep 2008)

heisst es nicht "erhabenes" wgal whatever 
du brauchst doch nur die for Schleife in der "normalen" Schreibweise schreiben und fertig ...


```
for(i=0;i < panel.getComponentCount(); i++;)
{
  Component c = panel.getComponent(i);
  if(c instanceof JComboBox)
         {
            ((JComboBox)c).setBackground(Color.RED); //c auf JCombobox casten
                                //oder JComboBox box = (JComboBox)c;
                                //box.setBackground(Color.RED);
         } 
}
```


----------



## Verjigorm (3. Sep 2008)

Wenn dein Compiler die "foreach"-Schleife nicht kennt, heisst das ja, du benutzt Java 1.4.x oder drunter :autsch:


----------



## Guest (3. Sep 2008)

Hallo auch Gast,

vielen Dank (hab die Methode ComponentCount() überlesen => deswegen bin ich nicht klar gekommen)...
nochmals Danke...


@SlaterB
Wie gesagt es lag nicht daran, dass ich keine normal for Schleife kenne sondern die Methode ComponentCount() schlichtweg überlesen habe und ich somit keinen Zielzähler hatte...ausserdem kannte ich die Zuweisung Component c = panel.getComponent(i); nicht...
=> ich kenne Schleifen schon länger und traue mich deshalb mittlerweile (aber nur ganz vorsichtig und sehr stümperhaft, wie man sieht...;-)...)...auch an Components ran...
=> nachdenken tu ich schon sehr viel in meinem Leben, da brauchst Du Dir keine Sorgen machen...
=> ich denke nicht, dass ich mich beschwert habe...(habe m.E. nur ne passende Antwort auf Deine (ERHABENDE) Antwort gegeben...)...
Fazit:
Ich bin, dank Gast und Verjigorm glücklich, weil die mir ne Lösung für mein Problem gegeben haben und Du bist glücklich, weil Du mir zeigen konntest, dass Du viel mehr weisst als ich...somit sind wir alle beide glücklich und das ist doch das beste Ergebnis aus dem ganzen, dass man sich vorstellen  kann oder?.. ;-)


----------



## SlaterB (3. Sep 2008)

> Wie gesagt es lag nicht daran, dass ich keine normal for Schleife kenne sondern die Methode ComponentCount() schlichtweg überlesen habe 

nebenbei erwähnt braucht du aber weder getComponentCount() noch getComponent(i) 

denn an einem Array wie getComponents() kann man immer .length und array_ aufrufen

nun kannst du noch sagen, dass du nicht wußtest, dass es ein Array ist,
das stand aber erstens in meiner Antwort (schau an, eine Info für dich)
und wäre ansonsten auch eine Grundlage, die zu bemängeln wäre

aber mecker ruhig weiter, wenn ich schon 'beschweren' nicht sagen darf.._


----------



## Verjigorm (3. Sep 2008)

Ach Slatermausi, manchmal kommst du einfach ziemlich pampig daher, auch wenn du meist der schnellste bist, der antwortet und deine Antworten meist sehr gut sind.

Vielleicht auchmal selbst etwas runterdrehen, hier sind nunmal viele, die sich auch teilweise nicht ausdrücken können.


----------



## SlaterB (3. Sep 2008)

ist doch kein Problem, 
und da ich selbst in den Antworten darauf nie 'pampig' werde, kann es ja nicht eskalieren


----------

