also ich habe mir mal überlegt, ob man ein Panel bzw. dessen Namen eventuell in eine Variable stecken kann. Ich habe mir das ungefähr so vorgestellt:
Ich erstelle mir meinetwegen drei Panels namens: panel_1, panel_2, panel_3. Nun erstelle ich eine Variable (vom Typ String) namens: panelx. Und nun möchte ich immer den Wert von panelx ändern, je nach Belieben zu panel_1, panel_2 und panel_3. Das möchte ich aber dann aber auch benutzen können, meinetwegen wenn ich was auf den Panels adden möchte.
Das was ausgeklammert ist, ist der eigentliche Code. Und das darunter ist meine Idee. Hier wird natürlich ein Fehler angezeigt, nämlich dass Strings hierfür nicht verwendet werden können. Aber kann man das so ähnlich irgendwie realisieren, auch wenn es eigentlich unnötig ist? Und wenn ja, wie?
Aber ich vermute das ist nicht das was du willst? Falls du über den Namen gehen willst, brauchst du einen Lookup-Mechanismus (eine Zuordnung Panel-zu-Name) über die du suchen kannst.
Eine Möglichkeit wäre eine Map (z.B.
Code:
HashMap<String, JPanel>
) eine andere wäre es, alle Componenten zu durchsuchen und den Namen zu vergleichen.
Naja, deine Panel sind ja vom Datentyp JPanel und nicht vom Typ String, darum funktioniert panel = "Panel1" nicht.
EDIT: Das mit setName() war natürlich Quatsch, was bitte soll ein JPanel mit einem Namen? Also nochmal zum Mitschreiben: was verstehst du unter "Namen des Panels"? Sollte es das Folgende sein:
Ich erstelle mir meinetwegen drei Panels namens: panel_1, panel_2, panel_3
?
Das sind keine Namen der JPanels sondern lediglich die Namen der Variablen, die dieses Panel referenzieren. Das hat mit dem eigentlichen JPanel aber rein gar nichts zu tun.
Das funktioniert an sich schon so wie ich es wollte, danke. Allerdings läuft es nicht so wie ich es mir (bei den Variablen) gedacht habe. Nehmen wir an ich füge noch zwei Buttons hinzu, welche auf Knopfdruck jeweils Bilder ausgeben sollen. Und es soll wie folgt aussehen (Ich habe das Meiste an Code einfach mal rausgenommen jetzt rausgenommen):
D.h. wenn ich button1 drücke, soll panelx = panel_2 sein. Wenn ich jedoch button2 drücke, soll panelx = panel_3 sein. Somit muss ich die Bilder nur einmal als Code haben und kann sie dennoch an zwei verschiedenen Stellen positionieren. Andernfalls müsste ich sie ja jeweils mit panel_2 und panel_3 adden, statt einfach nur mit panelx.
Oh mein Gott, ein wenig durcheinander gewesen, das habe ich ganz vergessen. Allerdings wird mir auch hier ein Fehler angezeigt:
-Syntax error on token "panelx" VariableDeclaratorld expected after this token
-panelx cannot be resolved to a variable (wurde aber doch vorher deklariert in ActionPerformed?)