Hallo,
ich möchte gern eine Funktion schreiben, die mir eine Komponente in einem Container inklusive darin enthaltenen Untercontainern sucht und diese bei Fund zurückgibt.
Momentan habe ich folgenden Code
[Java] public Component findComponentSubLevel(Container container,String name)
{
Component compFind = null;
for (Component compSearch: container.getComponents())
{
System.out.println(compSearch.getClass() + " " + compSearch.getName());
if ( compSearch.getName().equalsIgnoreCase(name) )
{
compFind = compSearch;
break;
}
else
{
if ( compSearch instanceof Container )
{
findComponentSubLevel((Container)compSearch, name);
}
}
}
return compFind;
}[/code]
Mein Problem: Meistens ist die gesuchte Komponente in einem Unterunterunter...container. Bei einem Fund der Komponente wird nun nur der Schleifendurchlauf für den aktuellen Container abgebrochen, aber für den Container darüber fortgesetzt. Wisst ihr was ich meine???
Ganz einfaches Beispiel:
Container 1
Panel 1_1
Textfeld 1_1_1
Textfeld 1_1_2
Panel 1_2
Textfeld 1_2_1
Textfeld 1_2_2
Gesucht wird Textfeld 1_1_1 ... Suche beginnt mit Container 1, findet Panel 1_1, sucht darin findet Textfeld, bricht die Suche in Panel 1_1 ab und springt zurück zur Suche in Container 1, findet dort Panel 1_2 und sucht darin weiter, findet nix und ich bekomme am Ende einen NullPointer.
Wie breche ich nun die Suche ganz ab und bekomme meine gesuchte Komponente zurück???
Vielen Dank für eure Hilfe.
chrissy
ich möchte gern eine Funktion schreiben, die mir eine Komponente in einem Container inklusive darin enthaltenen Untercontainern sucht und diese bei Fund zurückgibt.
Momentan habe ich folgenden Code
[Java] public Component findComponentSubLevel(Container container,String name)
{
Component compFind = null;
for (Component compSearch: container.getComponents())
{
System.out.println(compSearch.getClass() + " " + compSearch.getName());
if ( compSearch.getName().equalsIgnoreCase(name) )
{
compFind = compSearch;
break;
}
else
{
if ( compSearch instanceof Container )
{
findComponentSubLevel((Container)compSearch, name);
}
}
}
return compFind;
}[/code]
Mein Problem: Meistens ist die gesuchte Komponente in einem Unterunterunter...container. Bei einem Fund der Komponente wird nun nur der Schleifendurchlauf für den aktuellen Container abgebrochen, aber für den Container darüber fortgesetzt. Wisst ihr was ich meine???
Ganz einfaches Beispiel:
Container 1
Panel 1_1
Textfeld 1_1_1
Textfeld 1_1_2
Panel 1_2
Textfeld 1_2_1
Textfeld 1_2_2
Gesucht wird Textfeld 1_1_1 ... Suche beginnt mit Container 1, findet Panel 1_1, sucht darin findet Textfeld, bricht die Suche in Panel 1_1 ab und springt zurück zur Suche in Container 1, findet dort Panel 1_2 und sucht darin weiter, findet nix und ich bekomme am Ende einen NullPointer.
Wie breche ich nun die Suche ganz ab und bekomme meine gesuchte Komponente zurück???
Vielen Dank für eure Hilfe.
chrissy
Zuletzt bearbeitet: