In dieser Java Swing-Anwendung muss ein JPanel innerhalb eines JFrames basierend auf Benutzeraktionen mit einem anderen JPanel ausgetauscht werden. Um den geeigneten Ansatz zu untersuchen, um dies zu erreichen, wurde der folgende Code getestet:
panel = new CustomJPanelWithComponentsOnIt(); parentFrameJPanelBelongsTo.pack();
Dieser Ansatz schlägt jedoch fehl, die Panels zu wechseln.
Lösung: Nutzung von CardLayout
Die ideale Lösung für dieses Szenario liegt in der Verwendung von CardLayout, einem Layout-Manager, der die Anzeige mehrerer Panels ermöglicht und gleichzeitig selektiv nur ein Panel gleichzeitig anzeigt.
Um CardLayout zu implementieren, führen Sie die folgenden Schritte aus kann genommen werden:
Erstellen Sie ein CardLayout-Objekt:
CardLayout cardLayout = new CardLayout();
Legen Sie das Layout des Containers fest, der die Panels enthält (z. B. der JFrame):
parentFrameJPanelBelongsTo.setLayout(cardLayout);
Fügen Sie die Panels zum Container hinzu, indem Sie die Einschränkungen des CardLayouts verwenden:
parentFrameJPanelBelongsTo.add(new CustomJPanelWithComponentsOnIt(), "panel1"); parentFrameJPanelBelongsTo.add(new AnotherJPanel(), "panel2");
Setzen Sie das anfängliche Panel auf angezeigt werden:
cardLayout.show(parentFrameJPanelBelongsTo, "panel1");
Ändern Sie das aktive Panel dynamisch basierend auf der Benutzerinteraktion:
cardLayout.show(parentFrameJPanelBelongsTo, "panel2");
Das obige ist der detaillierte Inhalt vonWie tausche ich Panels innerhalb eines JFrame dynamisch aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!