Layout, Buttons und verschiedene Panel

Yoshi2k

Grünschnabel
Hallo zusammen,
ich habe ein Problem in Java Swing beim Ändern meines Layouts beim Klick auf einen Button, der auf einem eigenen Panel liegt.
Zum Aufbau meines Programms:
Ich habe einen Frame, auf dem links vier Buttons sind, die das Layout rechts ändern. Dies geschieht in der Datei "MainView.java". Ich verwende dazu folgenden Code (eine Switch Anweisung)
Code:
    public void setMainViewLayout(MainViewLayout layout)
    {
        switch(layout)
        {
            case MEDIA_LIST_AND_ENTRY_PANEL:
            {
                if(this.layout.equals(MainViewLayout.MEDIA_LIST_AND_ENTRY_PANEL))
                    break;
                
                mainPanel.removeAll();
                javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
                mainPanel.setLayout(mainPanelLayout);
                mainPanelLayout.setHorizontalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(ShowMediaScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 802, Short.MAX_VALUE)
                    .addComponent(MediaListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 802, Short.MAX_VALUE)
                );
                
                 mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                .addComponent(MediaListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 211, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ShowMediaScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 374, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
                 /*
                mainPanelLayout.setVerticalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                        .addComponent(MediaListScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(ShowMediaScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 260, javax.swing.GroupLayout.PREFERRED_SIZE))
                );
                
                  * */
                 break;
            }
            case NEW_MOVIE_ENTRY_PANEL:
            {
                if(this.layout.equals(MainViewLayout.NEW_MOVIE_ENTRY_PANEL))
                    break;
                
                mainPanel.removeAll();
                NewEntryPanel newEntryPanel = new NewEntryPanel();
                javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
                mainPanel.setLayout(mainPanelLayout);
                mainPanelLayout.setHorizontalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(newEntryPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 802, Short.MAX_VALUE)
                );
                mainPanelLayout.setVerticalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                        .addComponent(newEntryPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE))
                );
                break;
            }            
            case NEW_ENTRY_TYPE_CHOOSER_PANEL:
            {
                if(this.layout.equals(MainViewLayout.NEW_ENTRY_TYPE_CHOOSER_PANEL))
                    break;
                
                mainPanel.removeAll();
                NewEntryTypeChooserPanel newEntryTypeChooserPanel = new NewEntryTypeChooserPanel();
                javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);
                mainPanel.setLayout(mainPanelLayout);
                mainPanelLayout.setHorizontalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(newEntryTypeChooserPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 802, Short.MAX_VALUE)
                );
                mainPanelLayout.setVerticalGroup(
                    mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup()
                        .addComponent(newEntryTypeChooserPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE))
                );
                break;
            }
usw.
Je nachdem welcher Button links geklickt wird, bekommt die Funktion "setMainViewLayout" einen anderen Wert übergeben und ändert das Layout.

Nun zu meinem Problem:
Ich möchte nun dieses Layout mit Hilfe eines Buttons ändern, welcher sich auf einem separaten Panel befindet, nämlich dem, welches in "NEW_ENTRY_TYPE_CHOOSER_PANEL" aufgerufen wird.

Meine Frage ist also: Wie greife ich von diesem Panel auf diese Funktion zu, um eben das Layout des gesamten Frames zu ändern.

Ich hoffe ich konnte mich klar ausdrücken ;)

Vielen Dank schon einmal für die Hilfe!!

Viele Grüße
Stefan
 
Hallo

Ich würde das ganze im MVC-Prinzip implemenieren, also:

Ein Model, und ein Observer schreiben, deine beiden Panels beim Model als Observer hinzufügen, und wenn auf ein Button geklickt wird deine setMainViewLayout Methode ausführen.
 

Neue Beiträge

Zurück