Brauche Hilfe: JScrollPane an Inhalt herankommen
-
hallo zusammen
ich habe ein JPanel in einer JScrollPane und möchte von der JScrollPane das JPanel erhalten, damit ich es dynamisch ändern kann. Allerdings habe ich leider noch nicht herausgefunden, wie das geht. Mit JScrollPane.getComponent(...) bekomme ich nur die ScrollBars und den JViewport, ich will aber einfach nur mein Panel haben weil ich daran was machen muss
Die tutorials von sun helfen leider nicht, auch was ich so ergoogelt hab, da immer nur aufs "basic handling" eingegangen wird... ist mir ja schon längst klar. das problem ist nur, dass sich das panel in der ScrollPane dynamisch ändert, sprich es gibt mehrere verschiedene JPanels, die sich darin befinden könnten (aber immer nur eins auf einmal), deshalb kann ich nicht einfach meine referenz des JPanels verwenden.
gibt es denn keinen "getter", womit man an komponenten der JScrollPane herankommt? (getComponent(int index) scheint nicht zu gehen. bekomme damit nur die beiden scrollbars und den JViewport).Wäre toll, wenn mir jemand helfen kann, ich verzweifle hier grad ein wenig
danke
-
Moin,
habe grad auch keine Lösung dazu parat, aber hast Du denn mal getComponents() versucht?
Das gibt Dir ja ein Array wieder, was Du ja nach dem Panel abklappern könntest.Aber was anderes kommt mir grad nicht in den Sinn *grübel*
Gruß,
Puni
-
danke für deinen vorschlag puni. klar hab ich das schon versucht. das array hat die größe 3 und enthält die beiden scrollbars + den JViewport.
ich hab inzwischen ein workarround gefunden, das zwar das problem nicht löst, aber man könnte sagen, es "funktioniert".
es wäre trotzdem toll, falls noch jemand einen tip geben kann, der zu einer eleganten lösung führt
-
Du könntest das JPanel zwischenspeichern, z.B. in einer Member-Variable. Oder du benutzt den JViewport, um an den View (also das Panel) zu kommen. Siehe API-Dok.
-
Component was_du_suchst_ist = scrollPane.getViewport().getView();
-
ok super, das klingt gut, danke. ich hab doch in die api geschaut, wie konnte ich das nur übersehen
direkt mal ausprobieren