# Größe von JPanel ändern



## Indy (15. Nov 2011)

Hi Leute,

Ich bin ziemlich neu in der Java-Programmierung.
Habe es bis jetzt nur mit C und flash zu tun gehabt.

Folgende Frage:
Ich habe ein normales JFrame-Fenster erstellt:


```
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
f.setBounds(120,100,900,850);
f.setSize(new Dimension( 800, 600) );
```
f.setVisible( true );

Jetzt will ich ein JPanel hinzufügen, was ich so mache:


```
JPanel test=new JPanel();
test.setSize(50, 50);
test.setBackground(Color.BLACK);
f.add(test);
```

(Den Code setzte ich vor "f.setVisible(true);")

Der JPanel wird auch eingefügt, ist aber so groß wie der JFrame und füllt ihn voll aus.
In google hab ich rausgefunden, dass da wohl irgendein Layout manager schuld ist.

Könnt ihr mir sagen, wie ich das ändern kann?

Als Editor benutze ich übrigens Netbeans


----------



## Camill (15. Nov 2011)

Indy hat gesagt.:


> Könnt ihr mir sagen, wie ich das ändern kann?



Einen Layout Manager benutzen.

Ich verstehe nicht weßhalb man als Java "Neuling" direkt in die GUI-Programmierung einsteigt...


----------



## Indy (15. Nov 2011)

Ich denke, der Grund warum ich das mache, ist meine Sache.
Ich will eben keinen Layoutmanager benutzen.


----------



## SlaterB (15. Nov 2011)

wenn es deine Sache ist, warum behelligst du dann andere damit, könnte man fragen? 
die Grundlagen nicht lernen und dann von anderen deine Probleme lösen lassen, das ist nicht der originale Sinn des Forums,

setze FlowLayout statt BorderLayout, aber wahrscheinlich musst du immer noch lernen um diesen Satz umsetzen zu können


----------



## Indy (15. Nov 2011)

Wenn ich nicht geahnt hätte, dass die Möchtegern-Java-Cracks nur zu gerne auf Neulingen rumhacken, würde ich mich jetzt ärgern.

Natürlich könnte man großartig an Layouts rumbasteln bis man umfällt, aber es muss doch einfacher möglich sein, ein JPanel eine spiezielle Größe zu verpassen.


----------



## Michael... (15. Nov 2011)

JFrame bzw. dessen ContentPane besitzt standardmäßig ein BorderLayout. Ein add(Component) auf dem JFrame bewirkt, dass die Komponent im CENTER Bereich des ContentPanes platziert wird. Im BorderLayout ist es so definiert, das die Komponente im CENTER den maximal verfügbaren Raum einnimmt. Dadurch wird Dein Panel auf die gesamte Fläche im Frame vergrößert.

Obwohl ich der Meinung bin, dass man möglichst nie ohne LayoutManager arbeiten sollte und es nur in 0,001% der Fälle Sinn machen kann auf einen LayoutManager zu verzichten, verrate ich hier den Trick ;-)

```
frame.setLayout(null);
```
Aber Achtung, ein so Erstelltes Layout, kann bei anderen Auflösungen ganz schon besch... aussehen und nicht mehr bedienbar sein.


----------



## Indy (15. Nov 2011)

Michael... hat gesagt.:


> JFrame bzw. dessen ContentPane besitzt standardmäßig ein BorderLayout. Ein add(Component) auf dem JFrame bewirkt, dass die Komponent im CENTER Bereich des ContentPanes platziert wird. Im BorderLayout ist es so definiert, das die Komponente im CENTER den maximal verfügbaren Raum einnimmt. Dadurch wird Dein Panel auf die gesamte Fläche im Frame vergrößert.
> 
> Obwohl ich der Meinung bin, dass man möglichst nie ohne LayoutManager arbeiten sollte und es nur in 0,001% der Fälle Sinn machen kann auf einen LayoutManager zu verzichten, verrate ich hier den Trick ;-)
> 
> ...



Vielen, vielen Dank.
Endlich mal eine sinnvolle Antwort.
Mit diesem Code klappt es.
Hmm, ok ich werde deinen Rat befolgen und mich über LayoutManager schlau machen.


----------

