und zwar habe ich ein TabbedPane erstellt. In jedem Tab befindet sich wieder 2 Tabs. Nun möchte ich den Inhalt des einen Tabs ändern, der gerade geöffnet ist.
Mit
Java:
getComponentIndex
bekommt man ja die Componente des gerade geöffneten Tabs.
wird logischerweise der gesamte Inhalt eines äußeren Tabs überschrieben und in dem Tab sind die zwei Tabs nicht mehr sichtbar.
Muss ich mir, um das korrekt zu lösen erst mit
Java:
getComponentAt()
die Component holen, dann die innere Registerkarte suchen und diese dann überschreiben, damit ich ich schließlich Component wieder einfügen in den Tab?
Also quasi ein TabbedPane, wobei ein Tab wieder ein TabbedPane mit 2 Tabs enthält?
Dir bleibt eigentlich nichts weiter übrig als dich entweder die Component-Kette entlang zu hangeln oder mitzuschleifen welche Tabs gerade ausgewählt wurden. Dann könntest immer direkt diese Tabs ansprechen, würde aber mit Sicherheit einen Listener vorraussetzen, den du dann anhängst und zentral auswertest.
In dem Konstruktor meiner Klasse erstelle ich das TabbedPane. In einer Methode kann man dann einen Tab hinzufügen. In dieser Methode wird wiederum noch ein TabbedPane mit zwei Tabs A und B erstellt, das dem Tab hinzugefügt wird.
In Tab A habe ich einen Button. Wenn dieser gedrückt wird, dann soll der Inhalt von Tab A komplett ersetzt werden, der Button also verschwinden und beispielsweise ein Foto eingefügt werden.
Wie digga schon gesagt hat, musst du dir schon irgendwie die Referenz des Objektes verschaffen, welches du verändern willst.
Das kannst du entweder machen, indem du dir die Passende Indexkombination holst und dann damit die Componente ansprichst oder du speicherst dir immer die aktive(n) Componente(n) in einer Variable und sprichst dann diese an.
Damit dein Programm aber weiss, wann sich diese Werte ändern/aktuallisieren müssen, musst du auf jeden Fall Listener benutzen, die dann diese Änderungen anstoßen.
Gruß Vanny
PS: Den Post von J7Dev kannst du einfach ignorieren, is blödes Zeug.
wenn du den Button drückst dann hast du doch ne Komponentenhierarchie ausgehend vom Button nach oben zu dem Tab A, das sollte doch reichen. Dann kannst beim ActionListener mit e.getSource() arbeiten und hangelst dich einige Schritte nach oben. Geht natürlich nur wenn du in jedem Tab A den selben Grundaufbau hast (zB Tab A - Panel - Inhalt)
Vielleicht noch als Hinweise: Ich mache das Programm mit dem MVC Konzept.
In jedem Tab A ist der selbe Grundaufbau vorhanden. Wie meinst du das jetzt, mit einige Schritt nach oben hangeln?
In meiner Controller Klasse könnte ich ja für ein Action e mit e.getSource() die Component holen und diese dann meiner Methode übergeben, in der ich den Inhalt ändern möchte.
Wie finde ich aber in der Component meinen Tab, den ich ändern möchte?
Jetzt weiss der Button genau, welchen ActionListener er benachrichtigen soll, und der Listener weiss genau, in welchem Tab der Button betätigt wurde, und was zu tun ist.