# NetBeans Gui-Inhalt ändern



## cronjob (22. Feb 2009)

Moin moin,
ich habe den NetbeansGuiBuilder entdeckt und hab mich auch schon dazu (sehr Netbeans spezifisch) eingearbeitet. Ich hätte aber eine Frage.
Angenommen folgendes wäre meine Anwendung:
http://img150.imageshack.us/img150/7879/unbenanntf.jpg

Wenn man nun auf den "AddHim"-Button klickt soll das komplette mainPanel (der Teil in dem die "Logik" der Anwendung sitzt) durch ein anderes Panel ausgetauscht werden.
Das sollte so ähnlich aussehen wie wenn man unter windows eine Software installiert und sich durch den Installer klickt.

Beim klicken auf den addHim Button sieht meine Anwendung nun so aus:
http://img26.imageshack.us/img26/9314/unbenanntk.jpg

Wie kann ich soetwas am besten realisieren?
Folgender Code sorgt momentan bei mit für den Effekt:
[HIGHLIGHT="Java"]    @Action
    public void addHim() {
        mainPanel.removeAll();

        javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel);

        mainPanel.setLayout(mainPanelLayout);
        mainPanelLayout.setHorizontalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(addMe, javax.swing.GroupLayout.DEFAULT_SIZE, 628, Short.MAX_VALUE)
        );
        mainPanelLayout.setVerticalGroup(
            mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(addMe, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
        );
        mainPanel.validate();
        mainPanel.updateUI();

    }[/HIGHLIGHT]

Das GroupLayout das erzeugt wird habe ich zum größten Teil aus dem von NetBeans erzeugten Code für das originale mainPanel kopiert.

Das ist sicher nicht er NetBeans weg um etwas an der Gui zu verändern. Wie macht man das richtig?
NetBeans straft mich schon jetzt mit einer "WARNUNG: No saved state for javax.swing.JTabbedPane" wobei JTabbedPane der originale Inhalt des Mainpanels ist der ausgetauscht wird.

mfg
cronjob


----------



## L-ectron-X (22. Feb 2009)

Für sowas nimmt man vorzugsweise das CardLayout.
Das heißt, der Teil der ausgetauscht werden soll, sitzt in einem eigenen JPanel, welches das CardLayout bekommt. Dem Layout fügst du nun weitere JPanels hinzu und holst sie nach vorne, wenn die sichtbar werden sollen.

Alternativ kannst du immer wieder das alte JPanel entfernen ( _remove()_ ), ein neues JPanel hinzufügen und mit _validate()_ das Neuzeichnen anstoßen.


----------



## cronjob (22. Feb 2009)

Wo finde ich das CardLayout in NetBeans? Oder muss ich selber handanlegen und programmieren anstatt mir die Gui mit der Maus zurechtzuklicken?

danke für die schnelle Antwort!

mfg


----------



## L-ectron-X (22. Feb 2009)

Lege dir erst mal ein neues JPanel an.
Im Matisse (GUI-Editor) klickst du dann einmal zum Markieren in die Panelfläche.
Danach machst du einen Rechtsklick und im Kontextmenü wählst du
_Set Layout -> CardLayout_.
Damit hat dieses Panel das CardLayout.
Jetzt kannst du weitere JPanels zu diesem Panel hinzufügen. Diese werden jetzt quasi übereinander gelegt. NetBeans legt für dich die Bezeichnungen für die Panels an (kannst du auch ändern). Im Code musst du dann nur noch festlegen, welches Panel das CardLayout wann nach vorne holen soll.


----------



## cronjob (23. Feb 2009)

genial, Danke!


----------

