# Neues JPanel in JFrame einbinden



## möbi (2. Nov 2007)

Irgendwie komm ich gerade nicht weiter. Ich habe einen JFrame in einer Klasse und ein JPanel in deiner anderen Klasse. Irgendwie kriege ich das JPanel im JFrame nicht eingebunden. Könnte mir da mal kurz jemand weiterhelfen. Bin noch relativ neu in der GUI-Programmierung  :cry:


----------



## SlaterB (2. Nov 2007)

```
public class TestGUI
    extends JFrame
{
    public TestGUI()
        throws Exception
    {

        getContentPane().add(new TestPanel());

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(800, 400);
        setVisible(true);
    }

    public static void main(String[] args)
        throws Exception
    {
        new TestGUI();
    }
}


class TestPanel
    extends JPanel
{
    TestPanel()
    {
        super();
        setBackground(Color.GREEN);
    }
}
```


----------



## möbi (2. Nov 2007)

Ich glaub, ich bin zu blöd..... oder schon geistig im Wochenende.

Also ich habe eine Hauptklasse Login. Diese Klasse besteht aus einem JFrame und einem JPanel. Dann habe ich in einer separaten Klasse NumBlock nur ein JPanel und möchte, dass dieses im JFrame mit auf dem JPanel angezeigt wird.


----------



## SlaterB (2. Nov 2007)

das sagtest du schon 
(bzw. nun angereicht um ein paar nicht ganz unerhebliche zusätzliche Infos, 
aber nicht so, als das sich irgendwas neues ergäbe)


----------



## seekingone (8. Nov 2007)

In der Methode TestGUI findet sich

```
getContentPane().add(new TestPanel());
```

in wie weit unterscheidet sich dies von

```
TestPanel tp = new TestPanel();
getContentPane().add(tp);
```

wie ist es eleganter?

wie würde man das TestPanel auf ein anders Panel (z.B.: HintergrundPanel) hinzufügen?


----------



## SlaterB (8. Nov 2007)

wenn man keine Variable tp braucht, dann gehts auch direkt,
ob das schöner ist oder nicht muss jeder selber entscheiden

in andere JPanel einzufügen geht analog:

JPanel a = new JPanel();
JPanel b = new JPanel();
JPanel c = new JPanel();
JPanel d = new JPanel();
JPanel e = new JPanel();
JPanel f = new JPanel();
b.add(a);
c.add(b);
d.add(c);
e.add(d);
f.add(e);

getContentPane().add(f);


> In der Methode TestGUI 

das ist übrigens ein Konstruktor


----------



## seekingone (8. Nov 2007)

@SlaterB : DANKE !

Erstelle ich meinen JFrame und die JPanels "von Hand" dann funktioniert das Hinzufügen wunderbar, so wie ich mir das vorgestellt habe.

Allerdings kann ich der Oberfläche, die ich mit der Mantise (GUI-Designer) von NetBeans erstellt habe keine weiteren JPanels "von Hand" zuweisen. 

#edit#
leider habe ich jetzt fas Problem, dass ich das JPanel welches ich auf das andere JPanel gelegt habe nicht mehr entfernen kann... Ich möchte über ein Button die JPanels austauschen, ersetzen, erneuern...
Leider geht das im Moment nur, wenn ich alle JPanels lösche und die GUI komplett fisch aufbaue 


```
JPanel backpanel = new JPanel();
JPanel buttpanel = new JPanel();
JPanel dynamischesPanel_1 = new PanelKlasse_1();
JButton button = new JButton("tausch das panel");           
buttpanel.add(button);
backpanel.add(buttpanel);
backpanel.add(dynamischePanel_1);
```

Das "backpanel" liegt auf der contentPane und füllt diese komplett aus. Das "buttpanel" soll eine Art Menü darstellen und liegt rechts. Den gesamten Aufbau könnte man mit "iframe" aus HTML vergleichen.
Problem:
Ich bekomme "dynamischesPanel_1" nicht mit remove() von meinem "backpanel" wieder runter...


----------

