Swing Positionieren von Panels mit layoutManager

Status
Nicht offen für weitere Antworten.

I3ilbo

Mitglied
Hallo,

ich bin jetzt wirklich schon eine Weile auf der Suche und jetzt hab ich keine Lust mehr, deswegen frag ich einfach mal:

Ich habe eine Klasse geschrieben, die JFrame erweitert. Zu meinem Frame will ich zwei Panels untereinander setzen, die jeweils die volle Breite des Frames nutzen und das obere ca.90% der Höhe und das untere den Rest. Beim oberen Panel ist die Paint methode überschrieben und ich habe die Größe mit setSize gesetzt, wie ich sie haben will.

Wenn ich jetzt aber einen Layoutmanager erstelle (unabhängig davon welcher Layoutmanager) wird das Panel winzig in der Mitte des Frames angezeigt.

Wie kann ich den Layoutmanager (vorzugsweise GridLayout für evtl. spätere Änderungen) dazu zwingen den Spalten eine gewisse Größe (hier die FrameWidth) zu geben?

Ich haffe das ganze ist einigermaßen verständlich geworden....
Danke schonmal
 
GridLayout ist gerade schlecht, da dort zwingend alle Bereiche die gleiche Größe haben,
GridBagLayout wäre dagegen geeignet, dort kann man allerlei konfigurieren

How to Use GridBagLayout (The Java™ Tutorials > Creating a GUI With JFC/Swing > Laying Out Components Within a Container)

was hast du denn da bisher?

-----

für Layouts ist setPreferredSize() wichtiger als setSize() bzw. setSize() bringt nichts weil das eh vom Layout neu gesetzt wird, welches wiederum (manchmal) auf die PreferredSize Rücksicht nimmt
 
ich habe folgendes:

für das obere Panel habe ich
Java:
GridBagLayout gridbag = new GridBagLayout();
this.setLayout(gridbag);
constraints.gridheight=GridBagConstraints.RELATIVE;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(panel1, constraints);
und für das untere habe ich dann
Java:
constraints.gridheight=GridBagConstraints.REMAINDER;
constraints.gridwidth = GridBagConstraints.REMAINDER;
gridbag.setConstraints(panel2, constraints);

das müsste doch so passen? aber wie kann ich jetzt die Breite der spalten anpassen?
 
zu REMAINDER kann ich nichts sagen,
FILL, width + weight kenne ich, wie auch im Tutorial beschrieben
 
Hallo,

das ist mir ja auch klar.

Das REMAINDER sagt, dass das das letzte elemt in der Zeile ist, dass heißt alle restlichen Felder bis zum ende der Zeile werden genutzt.

Was ich brauch ist ja eine Einstellung, die bewirkt, dass das Grid über die Ganze Breite und Höhe des Frames gestreckt wird.

Außerdem: Wie kann ich denn die Anzahl der Spalten und Zeilen, die das Grid haben soll angeben?
 
> Was ich brauch ist ja eine Einstellung, die bewirkt, dass das Grid über die Ganze Breite und Höhe des Frames gestreckt wird.

FILL FILL und nochmal FILL, evtl. mit weightx/y

> Außerdem: Wie kann ich denn die Anzahl der Spalten und Zeilen, die das Grid haben soll angeben?

sicher dass du überhaupt schon irgendwelche Beispiele angeschaut hast?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben