# Unterschied JPanel und JFrame



## Fitzi21 (8. Jan 2011)

Hallo,

Ich hoffe mal dass ich meine Frage im richtigen Forum gepostet habe. Bin hier genau so ein Anfänger, wie auch in Java.

Warum ich mich hier angemeldet habe? In der Schule hatten wir ein ganz klein wenig Java als objektorientierte Programiersprache gelernt. Nachdem der Lehrplan nun durch ist, geht es daran, selber ein Projekt zu machen, das über das gelernte hinausgeht. 
Nachdem ich mich daheim hingesetzt habe, hat es dann auch nicht lange gedauert, bis die ersten Fragen kamen.

Unter anderem: 
*Was ist der Unterschied zwischen einem JFrame und einem JPanel ?*
Anders gefragt: Wann sollte ich ein JFrame und wann ein JPanel wählen.

Ich habe mich mal ne Weile durch google und hier im Forum durchgeklickt aber keine entsprechende Erklärung gefunden, bzw. keine, die für mich als blutiger Anfänger nachvollziebar war. 
Falls ich in den Tiefen des Forums etwas übersehen haben sollte, sry, ansonsten wäre es super wenn jemand die Frage kurz beanworten könnte. 

Schon mal vielen Dank für die Hilfe !

Liebe Grüße 
Fitzi


----------



## F.S.WhiTeY (8. Jan 2011)

Allgemein kann man sagen JFrame is für Fenster und JPanel zum ordnen im Fenster (Container).

Willste ne Gui Haben die sich mit dem netten X oben rechts schließen lässt, solltest du nen JFrame einbinden (Oberste Schicht). Deinen Text und die Komponenten kannst du durch Panel anordnen. 

JPanel kann aber noch viel mehr hab ich mir sagen lassen... 


HTH


----------



## tagedieb (8. Jan 2011)

Zum Anzeigen eines GUIs musst du es in einen aeusseren Container JFrame (mit Rand), JWindow (ohne Rand) oder ein Applet packen.

Du kannst nicht ein JPanel erzeugen und es durch 
	
	
	
	





```
jpanel.setVisible(true);
```
 anzeigen. Da passiert nichts. Ein JPanel muss immer in einen JFrame liegen. JPanels koennen auch ineinander verschachtelt werden.


----------



## Fitzi21 (8. Jan 2011)

Ok, danke euch beiden.
Dann heißt das für mich, die Grundlage ist ein JFrame/Window/Applet und dort kann ich dann die JPanels zur "Gliederung" einfügen. 
Ein JFrame im JFrame ist daher nicht möglich !?

Wenn ich nun zwei JFrames möchte, brauche ich dann auch zwei Klassen ?
Die Gui machen wir in der Schule immer mit Eclipse-Plugins (Jigloo/VE-Editor)

Wenn ja, wie rufe ich das dann auf ?
In der Schule haben wir immer nur mit einem JFrame gearbeitet und das Programm von der Startklasse aus mit 

```
Hauptfenster fenster = new Hauptfenster();
fenster.setVisible(true);
// Hauptfenster war die Visual Class mit der GUI
```
gestartet. 

Gehe ich richtig mit der Annahme, dass ich so dann auch zum Beispiel nach dem Drücken eines Anmelde Buttons mit diesem Befehl ein Frame(Klasse) öffnen kann?

VG Fitzi


----------



## tagedieb (8. Jan 2011)

> Ein JFrame im JFrame ist daher nicht möglich !?


Must du mal selber ausprobieren. Ich vermute es wird sich dann wie ein JPanel verhalten.



> Wenn ich nun zwei JFrames möchte, brauche ich dann auch zwei Klassen ?


Wenn du von JFrame erbst und im Konstruktor das GUI erstellst ja. Du kannst aber auch das GUI via einer Factorymethode zusammenbauen.


```
public void showJFrame() {
     JFrame frame = new JFrame();
     frame.add(new JLabel("Frame1"));
     frame.pack();
     frame.setVisible(true);
}
```



> Gehe ich richtig mit der Annahme, dass ich so dann auch zum Beispiel nach dem Drücken eines Anmelde Buttons mit diesem Befehl ein Frame(Klasse) öffnen kann?



Einfach ActionListener implementieren und dem Button zuweisen. Dann kannst du damit neue Frames/Dialoge anzeigen.


----------



## Fitzi21 (8. Jan 2011)

Ok, Danke euch nochmals.

Dann werde ich bald mal anfangen


----------

