ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
1553
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
  1. #1
    Yoshi2k ist offline Mitglied
    Registriert seit
    Jun 2005
    Beiträge
    10
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    
        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
     

  2. #2
    jannaef ist offline Mitglied
    Registriert seit
    May 2008
    Beiträge
    24
    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.
     

Thema nicht erledigt

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 03.02.09, 08:31
  2. Scrollpane - verschiedene swf über buttons ansteuern
    Von ulrikepeters im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 01.02.06, 13:34
  3. Antworten: 17
    Letzter Beitrag: 10.01.05, 11:41
  4. JScrollPane ein Panel mit null Layout hinzufügen
    Von schulzp im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 18.08.04, 16:53
  5. Beschriftung eines Buttons in ein Panel übertragen
    Von ZeroGirl im Forum Delphi, Kylix, Pascal
    Antworten: 2
    Letzter Beitrag: 25.06.04, 14:13