Swing Probleme mit dem adden von JButtons zur JScrollPane

AleexQo

Mitglied
Hey Leute,

ich habe folgende Klassen "User", "Playlist", "Klasse1", "Klasse2", "Klasse3".
Klasse1, Klasse2 und Klasse3 bekommen einen (den selben) User im Konstruktor übergeben.
Ein User besitzt eine List (ArrayList), welche Instanzen von Playlist beinhaltet.
Eine Playlist besitzt einen JButton und einen Titel.

Ich wollte nun in Klasse1 in einer JScrollPane die Playlists darstellen und habe dann in einer for-Schleife die bis zur Größe der Playlist des Users geht, alle Buttons geaddet.
Java:
for (int i = 0; i < user.getPlaylists().size(); i++) {
            pane.add(user.getPlaylists().get(i).getBtn());
        }

Das hat zunächst funktioniert, aber wenn ich nun in Klasse2 eine neue Instanz von Klasse3 aufrufe, in der auch in einer JScrollPane die Buttons der Playlists dargestellt werden, dann werden in Klasse1 die Buttons der Playlists nicht angezeigt (größe, layout, farbe egal).

Wenn ich den aufruf von Klasse3 in Klasse2 auskommentiere, funktioniert Klasse1 wieder.

Ich habe dann in Klasse3 (benutzt fast die selbe for-Schleife wie oben) alles unverändert gelassen und in Klasse1 neue Buttons erstellt mit dem Titel der Playlist
Java:
            pane.add(new JButton(user.getPlaylists().get(i).getTitle()));

So zeigt es in Klasse1 wieder Buttons in der ScrollPane an, jedoch sind dann die Buttons der ScrollPane in Klasse3 erst sichtbar, wenn man mit der Maus über sie fährt.

Habe schon einiges versucht, wie zum Beispiel das Layout in Klasse1 ändern oder die Farbe der Buttons. Habe auch schon neue JButtons erstellt und ihnen immer den jeweiligen Button der Playlist zugewießen.

Die getter-Methoden der Klassen funktionieren alle und in Klasse1 werden auch alle Buttons zum Panel (welches in der ScrollPane liegt) hinzugefügt, nur nicht angezeigt.
(Habe mir auf der Konsole die Anzahl der Komponenten des Panels nach der Schleife ausgeben lassen)

Woran kann das liegen?
 
Eine Playlist besitzt einen JButton und einen Titel.
Eine Klasse kann eine Attribut haben das auf ein JButton Objekt referenziert, aber keinen JButton besitzen 😉

Woran kann das liegen?
An deinem etwas ungewöhnlichen Design. Aber so wirklich kann man es nicht sagen, dazu bräuchte man mehr Code.
Wahrscheinlich überschreibst du irgendwo die Buttons bzw. das Panel auf dem die Buttons liegen oder ähnliches.[/QUOTE]
 
Eine Klasse kann eine Attribut haben das auf ein JButton Objekt referenziert, aber keinen JButton besitzen 😉
Danke, kenne mich mit den richtigen Ausdrücken noch nicht so gut aus 😀

An deinem etwas ungewöhnlichen Design. Aber so wirklich kann man es nicht sagen, dazu bräuchte man mehr Code.
Wahrscheinlich überschreibst du irgendwo die Buttons bzw. das Panel auf dem die Buttons liegen oder ähnliches.
Klasse3 hat eine Methode zum Ändern des Panels, vielleicht liegt es ja daran..
Aber habs jetzt schon anders gelöst, danke für die Antwort!🙂
 

Zurück
Oben